在JUnit中@BeforeClass和@AfterClass標注的方法必須是static的;但是在TestNg中卻沒有這樣的限制,這是為什么呢。
其實和他們兩的運行機制有關。
在junit中:
每運行一個@Test方法,就會為該測試類新建一個新的實例。(所以@BeforeClass和@AfterClass必須是static的,因為運行他們的時候,測試類還沒有實例化呢。)
有沒有發現這有助於提高測試方法之間的獨立性,因為每個@Test執行的時候,都新建了一個實例,這樣的話,可以避免測試方法之間重用各個@Test方法里面的變量值。
舉例:
測試結果:
而在TestNg中,@BeforeClass和@AfterClass方法就沒嚴格要求要是static。
因為運行testNg的時候,對一個類只會實例化一次。
舉例:
結果: