如果類是由測試套件啓動的,是否有方法知道JUnit 4測試類? 我有全局的東西,我想在所有測試(關於內存數據庫)之前運行,所以我認爲在測試套裝中這樣做。但是,我仍然希望能夠在沒有Test-Suit的情況下一次啓動一個測試,所以我需要知道是否需要在測試的@Before部分初始化全局事物...是否有人知道如果它是可能的 ?測試調用:如何設置所有測試套件共用
回答
有幾種方法可以實現這一點。最簡單最簡單的方法是在你的套件的開始和結尾運行一個'測試',它建立你的數據庫,然後設置一個全局標誌。在你的@Before和@After測試中,你檢查這個標誌,如果需要的話進行安裝/拆卸。
@RunWith(Suite.class)
@SuiteClasses({SetupTest.class, RealTest.class, TeardownTest.class});
這是最簡單的解決方案,但它是不是很漂亮,所以一個整潔的解決辦法是使用TestRule。看看延伸ExternalResource。這在圍繞您的測試方法的邏輯之後執行&之前。這將允許您將@Before和@After方法分解出來,以便在任何地方重複使用相同的代碼。
然後,對於您的套件,您還需要在邏輯之前/之後執行。不幸的是,用@RunWith(Suite.class)註解的類實際上並沒有實例化,所以你不能使用該類的構造函數,但是你可以擴展Suite。這取決於你將如何運行這一點,你將需要實現一個構造函數,使用@RunWith爲例:
public class MySuite extends Suite {
/**
* Called reflectively on classes annotated with <code>@RunWith(Suite.class)</code>
*
* @param klass the root class
* @param builder builds runners for classes in the suite
* @throws InitializationError
*/
public MySuite(Class<?> klass, RunnerBuilder builder) throws InitializationError {
this(builder, klass, getAnnotatedClasses(klass));
// put your global setup here
// set global variable
}
}
然後用
@RunWith(MySuite.class)
運行測試套件有幾個構造函數在不同情況下使用它們,查看每個細節旁邊的註釋。您仍然需要使用全局變量,以便您的規則不會重新執行設置代碼。如果你只想執行設置代碼,執行拆卸代碼會更困難,但是可以完成,上面的代碼可以工作。讓我知道你是否需要它:-)
如果你想要更多的靈活性(說執行設置代碼只爲特定的方法),然後看到我的回答How to define JUnit method rule in a suite?。
我會使用JUnit的@BeforeClass和@AfterClass註釋來指示執行此類工作的方法。
從@BeforeClass的Javadoc:
有時幾個測試需要共享計算昂貴的安裝 (如登錄到數據庫)。雖然這可能會影響測試的獨立性,但有時候這是一種必要的優化。 使用@BeforeClass註釋公共靜態void no-arg方法會導致 它會在類中的任何測試方法之前運行一次。超類的@BeforeClass方法將在當前類的 之前運行。
這與一個測試類文件中的幾個帶註釋的@Test方法有關,這不是我正在處理的場景,我需要它來處理幾個測試類。 – stdcall
您可以在每個測試套件中放置一些@BeforeClass
代碼,它們委託一個輔助類來完成常用的設置。輔助類可以有一個static boolean
記錄設置是否已經完成。如果它已經完成,輔助類將什麼都不做。
- 1. 如何爲類中的所有測試設置測試類別
- 2. Matlab xUnit Framework測試套件設置
- 3. 在Sinatra - 有沒有人使用測試夾具?你的測試套件如何設置?
- 4. JUnit4使用測試套件在特定包中運行所有測試
- 5. 查詢以獲取靜態測試套件中的所有測試用例?
- 6. TFS API:查找某個測試用例的所有測試套件
- 7. 我該如何測試我的gstreamer插件?是否有用於gstreamer插件測試的標準測試套件?
- 8. Spring Boot中所有測試的測試配置文件?
- 9. Python套件測試不運行測試
- 10. 如何使用phpunit測試用例測試ajax調用?
- 11. 如何使用新測試包調試瀏覽器測試
- 12. 如何用Resharper調試Jasmine測試?
- 13. ASP.Net測試套件?
- 14. Junit4測試套件
- 15. BURP套件測試
- 16. Android:測試套件
- 17. 有誰知道如何在測試套件中運行的測試用例中選擇部分測試方法?
- 18. 如何調試Jest測試?
- 19. 用一個測試用例測試所有的django模型
- 20. 如何在ruby中設置測試套件?
- 21. 使用delve調試測試
- 22. 如何在運行時使用測試ng來設置測試用例名稱?
- 23. 如何實現Java測試套件Selenium測試
- 24. 你如何決定在測試套件中測試什麼?
- 25. 如何確保調用OCUnit測試套件tearDown?
- 26. Selenium設置測試
- 27. 如何在Selenium IDE中爲每個測試套件的每個測試用例設置全局基本URL?
- 28. 如何使用Rapidminer測試測試集?
- 29. 如何對套件中的所有測試用例應用JUnit @Rule
- 30. 用於測試scorm 2004的測試套件2004
大多數鏈接都已死亡。 – Nadar