2012-06-25 57 views
2

App Engine文檔給出了一個example單元測試任務隊列,這對於「默認」隊列可以正常工作,但我需要對非默認隊列進行單元測試。測試非默認App Engine任務隊列

我越來越從以下線路異常:

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) 

回答

4

是的,你配置它就像其他單元測試工具類和通它的路徑來測試queue.xml中,礦山恰好是在/ src目錄/測試/資源(通常爲一個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 

更多細節上的裏克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> 
+6

和FWIW - org.mortbay.xml包含在appengine-tools-sdk jar文件中...確保它在你的測試類路徑 –

+2

謝謝瑞克。我的問題是缺少appengine-tools-sdk。 –

+0

甜美!樂意效勞。 –

0

當使用gradle這個插件,確保包括:

testCompile 'com.google.appengine:appengine-tools-sdk:1.9.9' 
相關問題