我希望方法public void testinputBiggerThan()在方法public static Collection testValues()中使用所有testvalue执行。
所以我想给予多个参数一个true或false的条件,然后在AssertTrue
中进行评估
@RunWith(Parameterized.class)
public class ParamaterizedTest {
@Parameterized.Parameters
public static Collection testValues() {
return Arrays.asList(new Object[][] {
{ 18.5, true },
{ 16.5, false },
{ 19.5, true },
{ 15.5, false },
{ 20.5, true }
});
}
@Test
public void testinputBiggerThanExpected(){
Double expected = 17.5;
AssertTrue(expected < //how do I get here all the values testValues() and evaluated whether this is the case 18.5 is (true because 18.5 is bigger than 17.5)& true in testValues()=true, etc );
}
}
2条答案
按热度按时间xuo3flqw1#
您需要提供一个构造函数,该构造函数具有
testValues()
方法返回的正确数量和类型的参数,然后将这些值作为字段赋值,并在测试中使用这些字段。对于
@Parameterized.Parameters
方法返回的每组值,以及每个@Test
注解的方法,Parameterized
测试运行器将创建一个新的测试类示例,并运行测试方法(这意味着如果您有5组值和3个测试方法,它将创建5 * 3个测试类示例)。因此,将您的代码更改为:
另请参阅有关Parameterized tests的JUnit 4文档。
顺便说一句,您目前使用的是JUnit 4,而在JUnit 5中使用参数化测试的方式既简单又强大。我建议您改用这种方式。有关更多信息,请参见JUnit 5用户指南的参数化测试一节。
j9per5c42#
你可以先迁移到JUnit5。你的测试方法
testinputBiggerThanExpected
应该使用@ParameterizedTest
annotation而不是@Test
。阅读link。或者更简单的方法: