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)
是的,您像其他单元测试工具类一样配置它,并将其传递给您的测试queue.xml的路径,我的恰好位于/src/test/resources(maven项目的通常位置)中
这是我的基本 junit 测试类的片段......
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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)