目前,我在閱讀「JUnit in action」一書。在本書中,我找到如下文字:JUnit:調用每個@Test方法之前的新實例。有什麼好處?
JUnit在調用每個 @Test方法之前創建一個新的測試類實例。這有助於提供測試方法之間的獨立性,並避免測試代碼中的無意的副作用。因爲每個測試 方法都在新的測試類實例上運行,所以我們不能在測試方法中重複使用實例 變量值。
現在,我看不出有一點這樣的做法:
例如:
public class CalculatorTest {
@Test
public void testAdd_1() {
Calculator calculator = new Calculator();
double result = calculator.add(1, 1);
assertEquals(2, result, 0);
}
@Test
public void testAdd_2() {
Calculator calculator = new Calculator();
double result = calculator.add(2, 2);
assertEquals(4, result, 0);
}
}
對於測試類CalculatorTest沒有任何好處。
好吧,讓我們去另一個例子注意:
public class OneTest {
static byte count;
public OneTest() {
count++;
}
@Test
public void test1() {
System.out.println(count);
}
@Test
public void test2() {
System.out.println(count);
}
}
對於測試類OneTest我找到了一種方法來使用的許多測試方法相同的變量個性化......
那麼,如何看看書中描述的方法的真正好處?
如果你正在談論'數'字段,那麼它是一個靜態字段。它是該類的一個屬性,而不是一個特定的實例。這就是爲什麼你看到它的價值的變化。 –
@babasmith:你應該取消刪除你的答案(也許通過顯示一個非靜態字段的例子來闡述更多)。 –
第一個例子:我們在測試方法之間沒有任何聯繫。 在這種情況下,爲執行每個測試方法創建新的測試類實例 - 沒有任何意義。 第二個例子: 我們可以通過靜態變量得到「無意的副作用」。 :)) 好處在哪裏? – user471011