2010-02-28 49 views
6

我使用Google Appengine for Java(GAE/J)。 最重要的是,我使用Jersey REST框架。Google AppEngine +本地JUnit測試+ Jersey框架+嵌入式Jetty

現在我想運行本地JUnit測試。測試

不幸的是,Jersey/Jetty組合產生了新的線程。 GAE預計只有一個線程可以運行。最後,我最終沒有在澤西資源或多個數據存儲中擁有不同的數據存儲,而是擁有不同的數據存儲。

作爲一種解決方法,我只將GAE本地env初始化一次,將其放入靜態變量中,並在GAE資源內部添加許多檢查(此線程沒有開發環境?重新使用靜態環境)。而這些檢查當然應該只在JUnit測試中運行..(我之前問過:「我怎樣才能知道代碼是否在JUnit測試中運行?」 - 我不允許直接發送鏈接位置: - |)

回答

4

也許使用系統屬性... 當它是一個Junit的運行通過JVM ARG設置Java系統屬性,你可以再試驗的是這樣的:

  • 傳中一個JVM arg通過運行配置參數當測試(在IDE等可能)如下:-DRunningTestsOnly=true
  • 代碼:if ("true".equals(System.getProperty("RunningTestsOnly")))

我在JUnit測試做類似於此之前,使用假設忽略測試中,我覺得時間太長我的動力不足dev的PC上運行...

  • 通在JVM ARG:-DexecuteQuickRunningTestsOnly=true
  • 要忽略一個緩慢的運轉測試方法,如果屬性設置我把在方法的頂部:assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));
+0

另外考慮使用環境變量,通過例如'String runLevel = System.getenv(「RUN_LEVEL」);'在代碼中進行訪問。 *獨立於語言的機制很受歡迎,它允許程序在不同的環境(開發,測試,集成,CI,生產等)中擁有不同的配置參數。 – gb96 2017-08-23 05:39:02

1

只是一個想法: 您可以創建一個異常,然後遍歷異常過的堆棧跟蹤來查看它們是否來自junit包中的一個類。

相關問題