我已经在Google上搜索了JUnit测试用例,它实现起来似乎要复杂得多-在其中必须创建一个扩展测试用例的新类,然后调用该类:

public class MathTest extends TestCase {
    protected double fValue1;
    protected double fValue2;

    protected void setUp() {
       fValue1= 2.0;
       fValue2= 3.0;
    }
 }

public void testAdd() {
   double result= fValue1 + fValue2;
   assertTrue(result == 5.0);
}

但是我想要的是非常简单的东西,例如NUnit测试用例
[TestCase(1,2)]
[TestCase(3,4)]
public void testAdd(int fValue1, int fValue2)
{
    double result= fValue1 + fValue2;
    assertIsTrue(result == 5.0);
}

在JUnit中有什么方法可以做到这一点?

最佳答案

2017更新: JUnit 5将通过junit-jupiter-params扩展包括参数化测试。 documentation的一些示例:

基本类型的单个参数(@ValueSource):

@ParameterizedTest
@ValueSource(strings = { "Hello", "World" })
void testWithStringParameter(String argument) {
    assertNotNull(argument);
}

逗号分隔的值(@CsvSource)允许指定类似于以下JUnitParams的多个参数:

@ParameterizedTest
@CsvSource({ "foo, 1", "bar, 2", "'baz, qux', 3" })
void testWithCsvSource(String first, int second) {
    assertNotNull(first);
    assertNotEquals(0, second);
}

其他源注释包括@EnumSource@MethodSource@ArgumentsSource@CsvFileSource,有关详细信息,请参见documentation

原答案:

JUnitParams(https://github.com/Pragmatists/JUnitParams)似乎是一个不错的选择。它允许您将测试参数指定为字符串,如下所示:

@RunWith(JUnitParamsRunner.class)
public class MyTestSuite {
    @Test
    @Parameters({"1,2", "3,4"})
    public testAdd(int fValue1, int fValue2) {
       ...
    }
}

您还可以通过单独的方法,类或文件来指定参数,有关详细信息,请查阅JUnitParamsRunner api docs

10-07 19:34