【问题标题】:How can I run many test cases for a test method如何为一个测试方法运行多个测试用例
【发布时间】:2025-12-18 22:25:04
【问题描述】:

我正在使用 JUnit。我有一个测试方法来测试一个方法和一些测试用例。我想在该测试方法中运行所有测试案例,但我不能这样做。当第一个测试用例失败时,测试方法不运行第二个测试用例

这是我的代码

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);


}

我该怎么做?

【问题讨论】:

    标签: unit-testing testing junit


    【解决方案1】:

    这里的标准建议是将您的第二个测试用例放入一个单独的方法中,然后无论第一个“测试用例”是否成功,它都会运行。

    您可以使用 setUp 方法来初始化 ComputeServices 实例,这样您就不需要在每个测试方法中使用该样板。

    【讨论】:

    • +1。问题中的 cmets 表明提问者对“测试用例”一词非常困惑。根据 cmets,该示例应该有几个不同的 TestCase 子类。每个“测试用例”的一类测试用例。这样也能解决问题。
    • @S.Lott :我不会混淆术语“测试用例”。在我的问题中,“测试用例”是一个带有输入和预期输出的测试用例,但不是 TestCase 的子类class.我认为您的解决方案不好,因为我必须创建许多类来扩展 TestCase 类来测试一个类的方法。 @unknow:感谢您的回答。根据您的回答,如果我想用 5 个测试用例测试验证电子邮件方法,我必须有 5 个方法 testEmail1,testEmail2,......很多测试用例?
    • 每个“TestCase”类可以有很多测试方法(testEmail1、testEmail2、testEmail3)。如果您想测试类 Calculator.java,标准是创建扩展 TestCase 的 CalculatorTest.java,并根据需要创建尽可能多的测试方法来测试 Calculator.java 提供的功能。每个测试方法不需要一个类,1 个 java 类来测试 --> 1 个测试类来编写(其中有很多测试方法)。
    【解决方案2】:

    测试用例在第一次断言失败时中止,这是设计使然。

    这是为了隔离测试用例:如果您的第二个断言失败,您如何知道 instance.add(9, 6) 是否损坏,或者这是由第一次调用 add() 方法引起的?

    当被测方法返回一个对象时,这很有用,如果出现错误,则返回 NULL。第一个断言确保方法返回一个对象,然后可以调用该对象的方法来验证其状态。当返回 NULL 时,测试用例在第一个断言上中止,将抛出 no NullPointerException(该模式名为 guard assertion)。

    在一个 TestCase 中可以有尽可能多的测试方法。

    【讨论】: