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
在大多数情况下,测试时使用随机/非确定性值是一个坏主意。即使在应该以某种随机方式行事的课堂中,测试也通常被设计为使得他们的行为以某种方式变得可预测。 –