JUnit 4.12如何測試@Before方法?
我正在爲類方法編寫一個測試。這裏是如何看起來像
public interface MyInterface{
//method declaration
}
public class MyClass implements MyInterface{
private int a;
private in b;
public MyClass(int a, int b){
if(a <= b + 5)
throw new IllegalArgumentException("Invalid arguments");
this.a = a;
this.b = b;
}
//methods
}
現在我想測試這個類:
public class MyClassTest{
private static final int THRESHOLD = 1000;
private MyClass mc;
@Before
public void init(){
Random rnd = new Random();
int a = rnd.nexInt(THRESHOLD),
b = rnd.nexInt(THRESHOLD);
mc = new MyClass(a, b);
}
}
但在這種情況下,init()
可能會拋出異常。所以我想測試保持不變式以及初始化一個對象以測試其他方法。
如何在JUnit中正確執行此操作?
該單元測試的設計不正確。你通常會有3個測試用例,它們的固定值是'a'和'b'。我們測試一下'a'低於'b + 5'的情況,一個測試'a'等於'b + 5'的情況,最後一個測試'a'大於'b + 5'的情況。使用'隨機'在這裏沒有必要或有幫助。 – Tom
爲什麼在@之前呢?如果你想測試異常,只是一個測試。 – RobAu
在大多數情況下,測試時使用隨機/非確定性值是一個壞主意。即使在應該以某種隨機方式行事的課堂中,測試也通常被設計爲使得他們的行爲以某種方式變得可預測。 –