原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-动态测试

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-动态测试
原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-动态测试

重要性:★★☆☆☆

注解为@Test的测试方法是静态的,因为其行为是在编译时完全决定的,不能在运行时进行修改。Assumptions(假设)提供了一定程度的动态行为(根据运行时环境条件动态调整测试执行)。

JUnit Jupiter提供了一种新的测试编程模型。可以通过注解了@TestFactory的测试工厂方法在运行时生成动态测试。

技术上而言,@TestFactory测试工厂方法必须返回单个的DynamicNode实例,或由DynamicNode组成的Stream,Collection,Iterable,Iterator或数组。DynamicNode有两个可实例化的子类:DynamicContainerDynamicTestDynamicContainer包括一个显示名和一组动态的子节点,能够用来创建任意多层的嵌套动态节点树。DynamicTest实例将被延迟执行,能够动态地甚至非确定性地生成测试用例。

@TestFactory返回的任何流将由JUnit通过调用Stream.close()正常关闭,因此使用类似Files.lines()这样的资源是安全的。

@Test方法一样,@TestFactory方法也必须是非private、非静态的,可以包含能够通过参数解析器解析的参数。

DynamicTest是由测试工厂方法在运行时生成的测试用例,它由一个显示名和一个Executable组成。

@Test不同,生命周期方法是针对整个@TestFactory测试工厂方法的,而不是针对测试工厂方法生成的每个测试用例。也就是说,模板方法生成的多个测试用例共享相同的测试类实例,一个测试用例修改了测试类的状态可能会影响下一个测试用例,因此必须小心对待。

详细的动态测试代码演示戳这里↓↓↓

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-动态测试

本文相关开源代码戳这里下载↓↓↓

代码下载 | TDD工具集原创开源代码免费下载!

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-动态测试
如果觉得有收获,点个【赞】鼓励一下呗!