簡體   English   中英

Google App Engine:將TaskQueue與JUnit測試用例一起使用時發生異常

[英]Google App Engine: Exception while using TaskQueue with JUnit test cases

我想從Junit測試用例中調用任務隊列。 我的代碼是:

@Test
    public void monthlyCronTest1() throws Exception {
....
       Queue queue = QueueFactory.getQueue("updateVcoCron");
       TaskOptions options = TaskOptions.Builder.withUrl(String.format("/api/v1/users/update/validation/points")).method(TaskOptions.Method.GET);
                    options.param("pageNumber", String.valueOf(pageNumber));
                    options.param("validatableBrands", validatableBrands);
          queue.add(options); // this line throw exception
......
}

在這里我得到錯誤:

 Exception:java.lang.IllegalStateException: The specified queue is unknown : updateVcoCron
    [junit] 1577867 INFO  org.quartz.impl.StdSchedulerFactory  - Quartz scheduler 'DefaultQuartzScheduler' initialized f
rom default resource file in Quartz package: 'quartz.properties'
    [junit] 1577867 INFO  org.quartz.impl.StdSchedulerFactory  - Quartz scheduler version: UNKNOWN.UNKNOWN.UNKNOWN
    [junit] 1577867 INFO  org.quartz.core.QuartzScheduler  - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.

2)如果我使用默認隊列,例如:

   Queue queue = QueueFactory.getDefaultQueue();

我得到不同的錯誤。

    [junit] com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: Received exception executing h
ttp method GET against URL http://localhost:8080/api/v1/users/update/validation/points?pageNumber=1&validatableBrands=Vi
rgin+Trains: Connection to http://localhost:8080 refused
    [junit]     at com.google.appengine.api.urlfetch.dev.LocalURLFetchService.fetch(LocalURLFetchService.java:412)
    [junit]     at com.google.appengine.api.taskqueue.dev.LocalTaskQueue$UrlFetchServiceLocalTaskQueueCallback.execute(L
ocalTaskQueue.java:701)
    [junit]     at com.google.appengine.api.taskqueue.dev.UrlFetchJob.execute(UrlFetchJob.java:90)
    [junit]     at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
    [junit]     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
    [junit] 432275 ERROR org.quartz.core.ErrorLogger  - Job (default.task-1a8a7b8a-db49-432e-ac3d-cce784211b8a threw an
exception.

我的queue.xml在以下路徑中:

的src /主/ web應用/ WEB-INF。

現在我的問題是:JUnit環境還剩下什么配置嗎? 為什么不選擇queue.xml? 請在這里幫助。

我遇到了“指定的隊列未知”錯誤。 在查看了此解決方案https://stackoverflow.com/a/11200214/2742117之后 ,我通過將其添加到基本測試類中來對其進行了修復

private static String dir;
static {
  dir = System.getProperty("user.dir") + "/src/main/webapp/WEB-INF/queue.xml";
  System.out.println(dir);
}

protected final LocalServiceTestHelper helper =
  new LocalServiceTestHelper(
      //some other configurations removed for brevity...
      new LocalTaskQueueTestConfig().setQueueXmlPath(dir)
  );

此后,我的測試就可以使用我的非默認隊列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM