gpt4 book ai didi

java - 让生成的测试正确报告结果

转载 作者:行者123 更新时间:2023-12-02 07:25:29 25 4
gpt4 key购买 nike

我创建了一个自定义 JUnit 4 运行程序(扩展了 BlockJUnit4Runner),其目的是运行测试,这些测试是其他测试在运行之前有效所必需的。例如,如果您正在测试某些文件 IO,读/写测试将需要打开/关闭测试才能正常工作。

这可以正确运行具有任意数量的要求的测试,并且对于不需要任何其他内容的测试可以正常报告,但是当我运行需要另一个测试的测试时,我得到“完成:1 of 2”,并且事件日志显示“测试已通过:1 通过”。即使所需的测试(第二个运行)失败也是如此。

@Override
protected void runChild(FrameworkMethod method, RunNotifier notifier) {
if (!alreadyRunMethods.containsKey(method.getName())) {
boolean requiredMethodsPassed = true;
for (Annotation anno : method.getAnnotations()) {
if (anno instanceof Requires) {
requiredMethodsPassed = runRequiredMethods((Requires) anno, notifier, method);
break;
}
}
if (requiredMethodsPassed) {
super.runChild(method, notifier);
}else{
notifier.fireTestAssumptionFailed(new Failure(describeChild(method), new AssumptionViolatedException("Required methods failed.")));
}
}
}

private boolean runRequiredMethods(Requires req, RunNotifier notifier, FrameworkMethod parentMethod) {
boolean passed = true;
for (String methodName : req.value()) {
FrameworkMethod method = methodByName.get(methodName);
if (method == null) {
throw new RuntimeException(String.format("Required test method '%s' on test method '%s' does not exist.", methodName, parentMethod.getName()));
}
runChild(method, notifier);
Boolean methodPassed = alreadyRunMethods.get(method.getName());
methodPassed = methodPassed == null ? false : methodPassed;
passed &= methodPassed;
}
return passed;
}

最佳答案

您的自定义运行程序应预先定义org.junit.runners.ParentRunner#getDescription,然后 IDEA 将正确显示树。

关于java - 让生成的测试正确报告结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com