写点什么

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

发布于: 2020 年 06 月 13 日
原创 | 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工具集原创开源代码免费下载!





如果觉得有收获,点个【赞】鼓励一下呗!



发布于: 2020 年 06 月 13 日阅读数: 60
用户头像

高级架构师,技术顾问,交流公号:编程道与术 2020.04.28 加入

杨宇于2020年创立编程道与术,致力于研究领域分析与建模、测试驱动开发、架构设计、自动化构建和持续集成、敏捷开发方法论、微服务、云计算等顶尖技术领域。 了解更多公众号:编程道与术

评论

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