JUnit 5令人印象深刻,尤其是当您深入研究扩展模型和体系结构时 。 但是从表面上讲,编写测试的地方,开发的过程比革命的过程更具进化性 – JUnit 4上没有杀手级功能吗? 幸运的是,至少有一个:参数化测试。 JUnit 5对参数化测试方法具有本机支持,并且具有允许使用同一主题的第三方变体的扩展点。 在本文中,我们将研究如何编写参数化测试-创建扩展将留待将来使用。
总览
这篇文章是有关JUnit 5的系列文章的一部分:
本系列基于预发行版本Milestone 4,并且在发布新的里程碑或GA版本时会进行更新。 另一个很好的来源是《 JUnit 5用户指南》 。 您可以在GitHub上找到所有代码示例。
在整个这篇文章中,我将大量使用terms 参数和自变量 ,其含义并不相同。 根据维基百科 :
术语参数通常用于指代在函数定义中找到的变量,而参数指代传递的实际输入。
您好,参数化世界
参数化测试入门非常容易,但是在开始乐趣之前,您必须向项目添加以下依赖项:
- 群组ID :org.junit.jupiter
- 工件ID :junit-jupiter-params
- 版本 :5.0.0-M4
然后,通过在@ParameterizedTest而不是@Test上声明带有参数和拍击的测试方法开始:
@ParameterizedTest
// something's missing - where does `word` come from?
void parameterizedTest(String word) {
assertNotNull(word);
}
看起来不完整– JUnit如何知道参数字应采用哪些参数? 好吧,因为您为其定义了零参数,所以该方法将被执行零次,并且实际上JUnit报告了该方法的Empty测试套件。
为了使事情发生,您需要提供参数,您可以从中选择各种来源。 可以说,最简单的方法是@ValueSource:
@ParameterizedTest
@ValueSource(strings = { "Hello", "JUnit" })
void withValueSource(String word) {
assertNotNull(word);
}
确实,现在测试执行了两次:一次是“ Hello”,一次是“ JUnit”。 在IntelliJ中,如下所示: