junit5 - 具有 jupiter-vintage-engine 规则的 Junit 5 Launcher 不支持 JUnit4 @ParametrizedTest
问题描述
我正在移植一个基于 JUnit4 的测试框架,该框架使用 JUnitCore 来启动带有 JUnit5 启动器、junit-vintage-engine 和带有 ClassSelector 的 LauncherDiscoveryRequest 的单元测试。
它适用于除@ParameterizedTest 之外的所有情况。Launcher 不支持参数化测试。
如何让 Launcher 支持 JUnit4 参数化测试?
我尝试添加 testCompile("org.junit.jupiter:junit-jupiter-params:${junit_jupiter_version}")
package ...;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import ...TestCategory;
import ...TestType;
import ...DataScramblingRegexTest;
@TestType(...TestCategory.UNIT)
@RunWith(Parameterized.class)
public class RegexGenTest {
private static final int LOOKAROUND_ATTEMPTS = 100;
@Parameterized.Parameter(0)
public String regex;
@Parameterized.Parameters(name = "{index}: RegexGenTest: {0}")
public static Iterable<String[]> data() {
return DataScramblingRegexTest.data();
}
@Test
public void testTransformAndGenerate() {
//even though Data Scramble Random Text doesn't transform every regex,
//even if we do, and run it through Generex, it should still work.
final String transformedRegex = RegexGen.transform(this.regex);
String randomStr = RegexGen.generate(transformedRegex);
if (RegexGen.containsLookArounds(this.regex)) {
for (int i = 0; i < LOOKAROUND_ATTEMPTS; i++) {
randomStr = RegexGen.generate(transformedRegex);
if (randomStr.matches(this.regex)) {
return;
}
}
Assert.fail("Lookaround failed");
}
Assert.assertTrue("generated string does not match regex: " + randomStr, randomStr.matches(this.regex));
}
}
构建.gradle
compile("junit:junit:${junit_version}")
testCompile("org.junit.vintage:junit-vintage-engine:${junit_jupiter_version}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junit_jupiter_version}")
testCompile("org.junit.jupiter:junit-jupiter-params:${junit_jupiter_version}")
testCompile("org.junit.jupiter:junit-jupiter-engine:${junit_jupiter_version}")
在哪里
junit_version=4.12
junit_jupiter_version=5.4.2
注意专有TestCategory.UNIT
注释,我们在测试发现代码中使用它并创建 aLauncher
和 a LauncherdiscoveryRequest
with ClassSelector
。
我希望带有 junit-jupiter-vintage 引擎的 JUnit5 启动器支持 JUnit 4 参数,但它不受支持。
解决方案
推荐阅读
- c - C 错误:此处不允许函数定义,我已经将函数放在 int main(void) 之上,删除了括号,错误仍然存在
- reactjs - React useReducer 中的问题
- ruby - Ruby/Watir 禁用保存密码提示
- javascript - 如何解决错误“此表达式不可构造”?
- flutter - Flutter 底部导航栏
- java - 更新云 Firestore 中的字段键
- azure-log-analytics - Azure Log Analytics - KQL - 获取年初至今计数的查询
- apache-kafka - Confluent 5.5.1 无法启动 Kafka Rest,Kafka 服务器未运行。错误:退出状态 127
- salesforce - 显示空白值的电子邮件模板。显示文本但字段值为空白
- c - 结构的静态数组与带有 libaio 的结构的 malloc 数组