diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
index ecdad64..ea5008f 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
@@ -213,4 +213,18 @@
         assertEquals(25074, node.at("/sentences").asInt());
         assertEquals(772, node.at("/paragraphs").asInt());
     }
+    
+    @Test
+    public void testStatisticsWithNamedVC () throws KustvaktException {
+        Response response = target().path(API_VERSION).path("statistics")
+                .queryParam("cq", "referTo unknownVC")
+                .request().method("GET");
+        String ent = response.readEntity(String.class);
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        JsonNode node = JsonUtils.readTree(ent);
+        assertEquals(0, node.at("/documents").asInt());
+        assertEquals(0, node.at("/tokens").asInt());
+        assertEquals(0, node.at("/sentences").asInt());
+        assertEquals(0, node.at("/paragraphs").asInt());
+    }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/VCReferenceTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusReferenceTest.java
similarity index 92%
rename from src/test/java/de/ids_mannheim/korap/web/controller/VCReferenceTest.java
rename to src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusReferenceTest.java
index 2afb2f7..5c53e17 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/VCReferenceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusReferenceTest.java
@@ -30,7 +30,7 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.Response.Status;
 
-public class VCReferenceTest extends SpringJerseyTest {
+public class VirtualCorpusReferenceTest extends SpringJerseyTest {
 
     @Autowired
     private NamedVCLoader vcLoader;
@@ -130,7 +130,7 @@
     public void testStatisticsWithRef () throws KustvaktException {
         String corpusQuery = "availability = /CC-BY.*/ & referTo named-vc1";
         Response response = target().path(API_VERSION).path("statistics")
-                .queryParam("corpusQuery", corpusQuery).request().get();
+                .queryParam("cq", corpusQuery).request().get();
         String ent = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(ent);
         assertEquals(2, node.at("/documents").asInt());
@@ -139,6 +139,19 @@
     }
 
     @Test
+    public void testStatisticsWithUnknownVC () throws KustvaktException {
+        String corpusQuery = "referTo unknown-vc";
+        Response response = target().path(API_VERSION).path("statistics")
+                .queryParam("cq", corpusQuery).request().get();
+        String ent = response.readEntity(String.class);
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        JsonNode node = JsonUtils.readTree(ent);
+        assertEquals(0, node.at("/documents").asInt());
+        assertEquals(0, node.at("/tokens").asInt());
+        assertEquals(0, node.at("/sentences").asInt());
+    }
+    
+    @Test
     public void testRefVcNotExist () throws KustvaktException {
         Response response = target().path(API_VERSION).path("search")
                 .queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
diff --git a/src/test/java/de/ids_mannheim/korap/web/lite/LiteStatisticControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/lite/LiteStatisticControllerTest.java
index 4314ef0..5fe5b1a 100644
--- a/src/test/java/de/ids_mannheim/korap/web/lite/LiteStatisticControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/lite/LiteStatisticControllerTest.java
@@ -160,4 +160,18 @@
         assertEquals(25074, node.at("/sentences").asInt());
         assertEquals(772, node.at("/paragraphs").asInt());
     }
+    
+    @Test
+    public void testStatisticsWithNamedVC () throws KustvaktException {
+        Response response = target().path(API_VERSION).path("statistics")
+                .queryParam("cq", "referTo unknownVC")
+                .request().method("GET");
+        String ent = response.readEntity(String.class);
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        JsonNode node = JsonUtils.readTree(ent);
+        assertEquals(0, node.at("/documents").asInt());
+        assertEquals(0, node.at("/tokens").asInt());
+        assertEquals(0, node.at("/sentences").asInt());
+        assertEquals(0, node.at("/paragraphs").asInt());
+    }
 }
