我正在使用JUnit.I有一个测试方法来测试方法和一些测试用例。我想在该测试方法中运行所有测试用例,但我不能这样做。当第一个测试用例失败时,测试方法不运行第二个测试用例
这是我的代码
public class ComputeServiceTest extends TestCase {
//test add method
public void testAdd()
{
ComputeServices 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
int x2 = 9;
int y2 = 6;
int expResult2 = 15;
int result2 = instance.add(x2, y2);
assertEquals("Second test case fail",expResult2, result2);
}
我该怎么做?
答案 0 :(得分:3)
这里的标准建议是将您的第二个测试用例放入一个单独的方法,然后无论第一个“测试用例”是否成功,它都会运行。
您可以使用setUp方法初始化ComputeServices实例,这样您就不需要在每个测试方法中使用该样板。
答案 1 :(得分:2)
测试用例在第一次断言失败时中止,这是设计的。
这是为了隔离测试用例:如果第二个断言失败,你怎么知道instance.add(9,6)是否被破坏,或者这是否是第一次调用add()方法引起的?
当测试中的方法返回一个对象时,这很有用,或者在出现错误时为NULL。第一个断言确保方法返回一个对象,然后可以调用该对象的方法来验证其状态。当返回NULL时,测试用例在第一个断言中止,将抛出NullPointerException(模式名为guard assertion)。
可以在TestCase中使用尽可能多的测试方法。