@Before
和分別各試驗中,或在整個測試類之前@BeforeClass
運行,@Rule
和@ClassRule
包裹每一個測試,或者整個測試類,分別。
比方說,我需要每個測試方法之前初始化一些數據,
如何使用@Before
和@Rule
之間做出選擇?在什麼情況下比另一個更受歡迎?同樣的問題也適用於@BeforeClass
與@ClassRule
。
@Before
和分別各試驗中,或在整個測試類之前@BeforeClass
運行,@Rule
和@ClassRule
包裹每一個測試,或者整個測試類,分別。比方說,我需要每個測試方法之前初始化一些數據,
如何使用@Before
和@Rule
之間做出選擇?在什麼情況下比另一個更受歡迎?同樣的問題也適用於@BeforeClass
與@ClassRule
。
事實上,正如@Quwin建議,accoridng到JUnit 4.12 API doc,
TestRule
可以做到這一點之前能夠與@Before
,@After
,@BeforeClass
,或@AfterClass
註釋 方法來做事,但TestRule
s爲(1)更強大,和(2)項目和類之間更容易共享 。
方式是TestRule
s爲更強大:
有已知的實施TestRule
班,其中有一些usefuls規則,你可以使用外的開箱,
有關如何這可能是有用的,看到這些提供TestRules,或寫你自己的例子:
ErrorCollector
:在一個測試方法- 靈活斷言
ExpectedException
收集多個錯誤:做出拋出的異常ExternalResource
:啓動和停止服務器,例如TemporaryFolder
:創建新的文件,刪除後測試TestName
:記得使用的測試名稱的方法TestWatcher
期間:在活動方法E過程中添加邏輯xecutionTimeout
:原因測試的一組時間Verifier
後失敗:如果對象狀態結束了不正確
的規則的另一個好處失敗測試,是多個規則可以在單一使用測試用例。您可能需要使用RuleChain
來指定規則應該運行的順序。
建議可能的重複http://stackoverflow.com/questions/20295578,但該問題沒有解決何時使用'@ Rule'與'@ Before' – sam