我已经在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。