diff --git a/Changes b/Changes
index 966f9de..8fef077 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.60 2021-12-10
+0.60 2021-12-13
     - [feature] Implemented a new cache with on disk
       storage and auto-update (margaretha).
     - [feature] Support for tokenized snippet output
@@ -9,6 +9,7 @@
     - [feature] Added a delete method to VirtualCorpusCache (margaretha)
     - [feature] Added normalization for slash in Fingerprinter (margaretha)
     - [security] Updated log4j due to CVE-2021-44228 (diewald)
+    - [feature] Added vc loading from classpath (margaretha)
 
     !!! This is a security fix - please update!
 
diff --git a/src/main/java/de/ids_mannheim/korap/KrillCollection.java b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
index 14153e7..8f8dbde 100644
--- a/src/main/java/de/ids_mannheim/korap/KrillCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/KrillCollection.java
@@ -3,6 +3,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.ByteBuffer;
 import java.util.Properties;
 import java.util.Set;
@@ -175,6 +176,9 @@
 			return null;
         }
 
+        String p = prop.getProperty("krill.test", "false");
+        boolean isTest = Boolean.parseBoolean(p);
+                
         String namedVCPath = prop.getProperty("krill.namedVC");
 
 		if (!namedVCPath.endsWith("/")) {
@@ -184,6 +188,7 @@
 		String fileName = namedVCPath + ref + ".jsonld";
 		File file; 
         String json = null;
+        InputStream is = null;
         if ((file= new File(fileName)).exists()) {
             try (FileInputStream fis = new FileInputStream(file)) {
                 json = IOUtils.toString(fis,"utf-8");
@@ -209,6 +214,18 @@
 				return this;
             }
         }
+        // for testing
+        else if (isTest
+                && (is = retrieveInputStreamFromClasspath(fileName)) != null) {
+            try {
+                json = IOUtils.toString(is, "utf-8");
+            }
+            catch (IOException e) {
+                this.addError(StatusCodes.READING_COLLECTION_FAILED,
+                        e.getMessage());
+                return this;
+            }
+        }
         else{
             this.addError(StatusCodes.MISSING_COLLECTION,
                     "Collection is not found " + fileName);
@@ -219,6 +236,14 @@
 	};
 
 
+    private InputStream retrieveInputStreamFromClasspath (String fileName) {
+        if (!fileName.startsWith("/")) {
+            fileName = "/"+fileName;
+        }
+        return KrillCollection.class.getResourceAsStream(fileName);
+    }
+
+
     /**
      * Import the "collection" part of a KoralQuery.
      * 
diff --git a/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java b/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java
index b456930..95bf1c6 100644
--- a/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java
+++ b/src/test/java/de/ids_mannheim/korap/cache/TestVirtualCorpusCache.java
@@ -68,7 +68,6 @@
         assertFalse(VirtualCorpusCache.contains(vcId));
     }
 
-
     @Test
     public void testReferToUncachedVC () throws IOException, QueryException {
         String vcId = "named-vc1";
diff --git a/src/test/resources/krill.properties b/src/test/resources/krill.properties
index eb7f374..0c26284 100644
--- a/src/test/resources/krill.properties
+++ b/src/test/resources/krill.properties
@@ -1,7 +1,7 @@
 krill.version = ${project.version}
 krill.name = ${project.name}
 krill.indexDir = test-output
-krill.namedVC = vc
 krill.index.commit.count = 15
 
-krill.namedVC=src/test/resources/queries/collections/named-vcs/
\ No newline at end of file
+krill.namedVC = queries/collections/named-vcs/
+krill.test = true
\ No newline at end of file
