首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JUnit木星参数化测试执行(JUnit5)

JUnit木星参数化测试执行(JUnit5)
EN

Stack Overflow用户
提问于 2017-01-09 14:36:28
回答 4查看 1.5K关注 0票数 4

有没有一种在JUnit Jupiter (Junit5)中进行参数化测试的方法?

代码语言:javascript
复制
@RunWith(Parameterized.class)

背景:

我浏览了如何为接口编写junit测试?,并希望使用JUnit5将测试用例实现为回答在这里。但在木星包裹中找不到相同的类/es。

尝试:

进一步寻找替代品,我发现扩展将取代迁移尖端中所述的@RunWith

@RunWith不再存在;被@ExtendWith所取代。

我尝试像样例Parameterized.中提供的那样定义一个CustomExtension,但是无法成功地使用类这里- MockitoExtension的实例。

期待关于如何使用在JUnit5中实现它的类的参数化实例来测试接口的建议。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-02 08:09:58

JUnit 5 M4刚刚发布,现在支持参数化测试。

下面是"Hello“的例子:

代码语言:javascript
复制
@ParameterizedTest
@ValueSource(strings = { "Hello", "World" })
void testWithStringParameter(String argument) {
    assertNotNull(argument);
}

有关完整的文档和其他示例,请参阅用户指南

票数 5
EN

Stack Overflow用户

发布于 2017-01-09 14:51:16

从2017年1月9日起,JUnit 5并不支持参数化测试本身,而是支持该特性正在进行中。请注意,您可能能够在动态试验中实现类似的功能。

尽管如此,我会考虑实现接口测试的两种糟糕的方法,JUnit木星提供了两种更好的方法:

  1. @Test注释接口默认方法将被执行。因此,如果您有一个生产接口Interface,您可以编写一个接口InterfaceTest,它使用默认方法来测试您想要的任何东西。对于每个Impl implements Interface,您都可以编写一个ImplTest implements InterfaceTest
  2. 如果您需要更多的灵活性,并且希望在抽象类AbstractInterfaceTest中实现对AbstractInterfaceTest的测试,您也可以这样做,然后在ImplTest中有一个扩展AbstractInterfaceTest嵌套测试类

这两种方法都确保接口的测试不知道实现接口的类,这是回答你的链接的一个巨大缺点。

票数 4
EN

Stack Overflow用户

发布于 2017-02-12 12:22:20

您可以使用动态试验

代码语言:javascript
复制
@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]))
                        )
                );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41550340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档