我正在使用JUnit。 我想在测试方法中多次调用assertEquals()来测试许多不同的测试用例,但我不想有很多测试方法。 所以我使用setUp()和tearDown()。 但是当第一个assertEquals()失败时。第二个assertEquals()不起作用,并且setUp()方法只被调用了一次。
这是我的代码
public class ComputeServiceTest extends TestCase {
private ComputeServices instance = new ComputeServices();
public ComputeServiceTest(String name)
{
super(name);
}
protected void setUp()
{
System.out.println("aaaaaaaaaaaaaaaaaaaaa");
instance = new ComputeServices();
}
protected void tearDown() {
}
//test add method
public void testAdd1()
{
//instance = new ComputeServices();
//First test case
int x1 = 7;
int y1 = 5;
int expResult1 = 13;
int result1 = instance.add(x1, y1);
assertEquals("First test case fail",expResult1, result1);
// Second test case
System.out.println("AAAAAAAAAAAAAAAAAAAAAaaaaaaaaaa");
int x2 = 9;
int y2 = 6;
int expResult2 = 16;
int result2 = instance.add(x2, y2);
assertEquals("Second test case fail",expResult2, result2);
}
}
请帮我解决这个问题。
答案 0 :(得分:3)
尝试使用parametrized tests。
答案 1 :(得分:3)
我认为您没有正确使用该工具(JUnit)。
单元测试可能失败或成功,没有半成功或半失败的测试。
对于每个测试,单个设置必须足够,如果您需要多个设置调用,那么您将多个测试放在一个中。
我认为将测试分成许多小测试没有任何缺点。安装和拆卸不应该很重,测试应该按照ms的顺序运行,测试的粒度越高越好,所以你确切地知道哪些功能已经停止工作。
答案 2 :(得分:0)
你应该让它们起作用,或者如果你现在不想要,那就把它们写进很多测试方法。
此致
麦克 [; - )
答案 3 :(得分:0)
如果你真的想要只有一种测试方法,你可以在你的独特测试方法结束时有一个断言:
assertEquals("my big assertion",
true,
((expResult1==result1) && (expResult2, result2));
但我不会建议:你怎么知道哪个测试失败呢?你没有任何细节。
为什么不想避免在TestCase中使用多种测试方法?可能有另一种方法来实现你想要的。