我正在測試微型搜索引擎的不同部分,並且一些JUnit測試會在索引中留下干擾其他測試的條目。在JUnit/Maven中是否有一個用於在測試之間清除對象的約定?如何清除JUnit/Maven測試之間的對象?
1
A
回答
2
有2個特別的註釋,可以幫助你這個問題,並打算在情況下使用,例如你的:
@After
定義了一定的方法必須在每次@Test
後執行,同時@AfterClass
是方法一旦完成整個測試類的執行。把後者想象成最後的清理方法來清除你迄今在測試中使用和共享的任何結構或記錄。
下面是一個例子:
@After
public void cleanIndex() {
index.clear(); //Assuming you have a collection
}
@AfterClass
public void finalCleanup() {
//Clean both the index and, for example, a database record.
}
注:他們通過調用@Test
方法之前相關的方法和開始執行該@Test
之前有其對應物(@Before
和@BeforeClass
),其以完全相反的定義在這個類上。這是在以前版本的JUnit中使用的setUp
。
如果你不能使用註釋,另一種方法是使用好老tearDown
方法:
public void tearDown() {
index.clear(); //Assuming you have a collection.
}
這是由JUnit框架提供和表現如同@After
註釋的方法。
1
您應該使用@Before註釋來確保每個測試都從乾淨狀態運行。請參閱:Test Fixtures。
1
在您的junit測試課程中,您可以覆蓋方法setup
和teardown
。 setup
將在每次測試之前運行,而teardown
將在每次測試完成後運行。
例如:
public class JunitTest1 {
private Collection collection;
//Will initialize the collection for every test you run
@Before
public void setUp() {
collection = new ArrayList();
System.out.println("@Before - setUp");
}
//Will clean up the collection for every test you run
@After
public void tearDown() {
collection.clear();
System.out.println("@After - tearDown");
}
//Your tests go here
}
這是其間的測試清理出有用的數據,但也可以讓你不必重新初始化每一個測試你的內場。
相關問題
- 1. 升壓測試夾具對象在測試之間清除
- 2. Factory Girl創建的對象在測試之間沒有清除?
- 3. 是否在測試之間清除Rails.cache?
- 4. 在硒HTML測試之間清除cookie?
- 5. 如何清除ruby中的rspec測試之間的類變量
- 6. 如何在NUnit測試對象之間使用持久對象?
- 7. Rails如何在硒測試之間清除數據庫
- 8. 實體框架集成測試DropCreateDatabaseAlways不清除測試之間的數據庫
- 9. 清除儀器測試之間的意圖
- 10. 如何在Mocha測試之間清除我的MongoDB集合? Collection.remove({})不起作用。 。 。
- 11. RSpec測試時間對象
- 12. Android單元測試:如何清除SharedPreferences
- 13. 刪除對象之間的空間
- 14. 如何清除池中的對象?
- 15. 測試,如果對象被刪除
- 16. lodash如何測試對象
- 17. 如何測試OAuth對象?
- 18. 如何刪除對象之間的空間?
- 19. Window對象上$區間清除
- 20. 刪除單元測試之間對Python類的引用
- 21. 測試對象之間的關係(Laravel 4)
- 22. 測試Java整數包裝對象之間的相等性
- 23. 如何清除對象上下文
- 24. 如何清除Python threading.local對象?
- 25. 如何「清除」一個對象?
- 26. 如何清除模型對象列表
- 27. javascript/omniture - 如何清除對象(s對象)的所有屬性
- 28. 如何清除對象30分鐘(長時間運行)?
- 29. 如何檢測除了coco數據集之外的對象?
- 30. 如何測試對於PowerPoint SlideShowWindow對象?