diff --git a/.gitignore b/.gitignore
index a89d9ae..cf2be21 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,4 +25,5 @@
 /dependency-reduced-pom.xml
 /bin
 /src/test/resources/sample-index
+/src/test/java/de/ids_mannheim/korap/collection/TestWithExternalIndex.java
 /krill_cache/
diff --git a/pom.xml b/pom.xml
index 8115a83..4514523 100644
--- a/pom.xml
+++ b/pom.xml
@@ -290,7 +290,6 @@
 						<exclude>**/TestRealIndex.java</exclude>
 						<exclude>**/TestSampleIndex.java</exclude>
 						<exclude>**/TestVCCaching.java</exclude>
-						<exclude>**/TestWithExternalIndex.java</exclude>
 					</excludes>
 				</configuration>
 			</plugin>
diff --git a/src/test/java/de/ids_mannheim/korap/collection/TestWithExternalIndex.java b/src/test/java/de/ids_mannheim/korap/collection/TestWithExternalIndex.java
deleted file mode 100644
index acaf1ed..0000000
--- a/src/test/java/de/ids_mannheim/korap/collection/TestWithExternalIndex.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package de.ids_mannheim.korap.collection;
-
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Paths;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.lucene.store.MMapDirectory;
-import org.junit.Test;
-
-import de.ids_mannheim.korap.Krill;
-import de.ids_mannheim.korap.KrillIndex;
-
-public class TestWithExternalIndex {
-    private KrillIndex getSampleIndex () throws IOException {
-        return new KrillIndex(new MMapDirectory(
-                Paths.get(getClass().getResource("/sample-index").getFile())));
-    }
-
-    private KrillIndex index;
-
-    public TestWithExternalIndex () throws IOException {
-        index = getSampleIndex();
-    }
-
-    @Test
-    public void testIndexTextSigleNe () throws IOException {
-        InputStream is = getClass().getClassLoader()
-                .getResourceAsStream("queries/collections/query-textSigle-ne.jsonld");
-        String json = IOUtils.toString(is);
-
-        Krill k = new Krill(json).apply(index);
-        long totalResults = k.getTotalResults();
-//        System.out.println(k.toJsonString());
-        assertTrue(totalResults > 0);
-    }
-}
