【问题标题】:Testing non-default App Engine task queues测试非默认 App Engine 任务队列
【发布时间】:2015-06-05 22:31:58
【问题描述】:

App Engine 文档提供了example 的单元测试任务队列,它适用于“默认”队列,但我需要对非默认队列进行单元测试。

我收到以下行的异常:

val qsi = ltq.getQueueStateInfo.get("non-default");

我假设我需要在测试环境中配置非默认队列,其方式与需要配置非默认生产队列(通过 queue.xml)大致相同,但我不知道该怎么做关于这个。

我的测试环境中的某处是否需要 queue.xml 文件?如果有,在哪里。

我在资源目录中使用 queue.xml 文件尝试了以下操作,但它抱怨找不到 org/mortbay/xml/XmlParser

 val ltqtc = new LocalTaskQueueTestConfig
 ltqtc.setQueueXmlPath(this.getClass.getResource("queue.xml").getPath)
 val helper = new LocalServiceTestHelper(ltqtc)

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    是的,你像其他单元测试工具类一样配置它,并将它的路径传递给你的测试 queue.xml,我的恰好在 /src/test/resources(maven 项目的通常位置)

    这是我的基础 junit 测试类中的一个 sn-p...

    static {
        dir = System.getProperty("user.dir") + "/src/test/resources/queue.xml";
    
    }
    private final LocalServiceTestHelper helper = new LocalServiceTestHelper(
            new LocalDatastoreServiceTestConfig(),
            new LocalTaskQueueTestConfig().setQueueXmlPath(dir));
    

    然后你可以做类似的事情(如果这与上下文无关,很抱歉,但它应该给你这个想法......而且它很时髦,所以它可能看起来很奇怪)

    //do something that might trigger a queue to run...
        NotificationService.getInstance().doNotification(interaction)
    
        LocalTaskQueue taskQueue = LocalTaskQueueTestConfig.getLocalTaskQueue()
        Map allQueues = taskQueue.getQueueStateInfo()
        QueueStateInfo mailQueue = allQueues.get(EmailTaskQueue.MAIL_QUEUE)
        assert mailQueue.getCountTasks() == 1
    

    有关 Rick Mangi 评论的更多详细信息。如果您收到如下错误:

     java.lang.NoClassDefFoundError: org/mortbay/xml/XmlParser
    

    将此添加到您的 pom.xml:

    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-tools-sdk</artifactId>
      <version>${gae.version}</version>
    </dependency>
    

    【讨论】:

    • 和 fwiw -- org.mortbay.xml 包含在 appengine-tools-sdk jar 文件中...确保它在您的测试类路径中
    • 谢谢瑞克。我的问题是缺少 appengine-tools-sdk。
    • 您的“dir”变量可以选择如下定义:dir = "src/test/resources/queue.xml";
    【解决方案2】:

    使用 gradle 插件时,请确保包含:

    testCompile 'com.google.appengine:appengine-tools-sdk:1.9.9'
    

    【讨论】:

      猜你喜欢
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多