Junit的@BeforeClass
和@AfterClass
必須聲明爲靜態。 @BeforeClass
有一個很好的解決方法here。我在課堂上有許多單元測試,只想初始化和清理一次。有關如何獲得@AfterClass
解決方法的任何幫助?我想使用Junit而不引入額外的依賴關係。謝謝!Junit @AfterClass(非靜態)
7
A
回答
0
如果您想要提供類似於@BeforeClass
提及的解決方法,您可以跟蹤已經運行了多少測試,然後一旦所有測試運行完畢,最終執行您的結束清理代碼。
public class MyTestClass {
// ...
private static int totalTests;
private int testsRan;
// ...
@BeforeClass
public static void beforeClass() {
totalTests = 0;
Method[] methods = MyTestClass.class.getMethods();
for (Method method : methods) {
if (method.getAnnotation(Test.class) != null) {
totalTests++;
}
}
}
// test cases...
@After
public void after() {
testsRan++;
if (testsRan == totalTests) {
// One time clean up code here...
}
}
}
這裏假設你正在使用JUnit 4,如果您需要考慮從超類繼承的方法,請參閱this因爲這個解決方案沒有得到繼承的方法。
相關問題
- 1. Junit課前(非靜態)
- 2. 以非靜態方式創建JUnit TestSuite
- 3. 在Junit中向Afterclass添加代碼
- 4. powermockito靜態和非靜態方法鏈
- 5. 靜態和非靜態
- 6. 靜態與非靜態類
- 7. Junit - 嘲笑靜態方法
- 8. Junit的靜態分析
- 9. JUnit @BeforeClass非靜態解決Spring引導應用程序
- 10. 非靜態...靜態是什麼?
- 11. 靜態BufferedImage來自非靜態
- 12. C# - 非靜態類的靜態事件
- 13. 使用靜態或非靜態類
- 14. 靜態/非靜態方法問題
- 15. 泛型方法:靜態與非靜態
- 16. 靜態和非靜態方法工作
- 17. 靜態與非靜態變量C++
- 18. 從靜態類觸發非靜態類?
- 19. 非靜態/靜態變量錯誤
- 20. PHP:靜態優於非靜態?
- 21. 靜態和非靜態故障
- 22. c#靜態或非靜態類
- 23. 在java中靜態和非靜態?
- 24. 靜態函數和非靜態變量
- 25. 聲明非靜態類靜態
- 26. 訪問非靜態類的靜態類
- 27. 靜態和非靜態數據以JavaScript
- 28. 靜態/非靜態方法參考
- 29. 是t1靜態還是非靜態?
- 30. 非靜態類的靜態成員?
什麼阻止你使用靜態方法建立和拆卸?誠然,你設置的狀態必須移動到靜態字段,但它聽起來像你希望它具有靜態範圍。 –
將測試實例保存在'static'字段中。在你的'@ AfterClass'方法中訪問它,並讓它調用你想要的任何清理方法。 –
還有其他類可以訪問需要不同作用域的相同清理方法 – jamesw1234