有没有一种在JUnit Jupiter (Junit5)中进行参数化测试的方法?
@RunWith(Parameterized.class)背景:
我浏览了如何为接口编写junit测试?,并希望使用JUnit5将测试用例实现为回答在这里。但在木星包裹中找不到相同的类/es。
尝试:
进一步寻找替代品,我发现扩展将取代迁移尖端中所述的@RunWith
@RunWith不再存在;被@ExtendWith所取代。
我尝试像样例Parameterized.中提供的那样定义一个CustomExtension,但是无法成功地使用类这里- MockitoExtension的实例。
期待关于如何使用在JUnit5中实现它的类的参数化实例来测试接口的建议。
发布于 2017-04-02 08:09:58
JUnit 5 M4刚刚发布,现在支持参数化测试。
下面是"Hello“的例子:
@ParameterizedTest
@ValueSource(strings = { "Hello", "World" })
void testWithStringParameter(String argument) {
assertNotNull(argument);
}有关完整的文档和其他示例,请参阅用户指南。
发布于 2017-01-09 14:51:16
从2017年1月9日起,JUnit 5并不支持参数化测试本身,而是支持该特性正在进行中。请注意,您可能能够在动态试验中实现类似的功能。
尽管如此,我会考虑实现接口测试的两种糟糕的方法,JUnit木星提供了两种更好的方法:
@Test注释接口默认方法将被执行。因此,如果您有一个生产接口Interface,您可以编写一个接口InterfaceTest,它使用默认方法来测试您想要的任何东西。对于每个Impl implements Interface,您都可以编写一个ImplTest implements InterfaceTest。AbstractInterfaceTest中实现对AbstractInterfaceTest的测试,您也可以这样做,然后在ImplTest中有一个扩展AbstractInterfaceTest的嵌套测试类。这两种方法都确保接口的测试不知道实现接口的类,这是回答你的链接的一个巨大缺点。
发布于 2017-02-12 12:22:20
您可以使用动态试验:
@TestFactory
Stream<DynamicTest> params() {
return Stream.of(new double[][]{{2d, 4d}, {3d, 9d}, {4d, 16d}}).
map(i ->
dynamicTest("Square root test " + Arrays.toString(i),
() -> assertEquals(i[0], Math.sqrt(i[1]))
)
);
}https://stackoverflow.com/questions/41550340
复制相似问题