java.lang.Exception错误:测试类应该只有一个公共构造函数



运行JUnit测试时出现异常。

java.lang.Exception: Test class should have exactly one public constructor

下面是我的代码片段,有什么想法吗?

package com.tests;    
import org.junit.Rule;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

public class AllTests implements TestRule {
private int retryCount;
private AllTests(int retryCount) {
this.retryCount = retryCount;
}
public Statement apply(Statement base, Description description) {
return statement(base, description);
}
private Statement statement(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
Throwable caughtThrowable = null;
// implement retry logic here
for (int i = 0; i < retryCount; i++) {
try {
base.evaluate();
return;
}
catch (Throwable t) {
caughtThrowable = t;
System.err.println(description.getDisplayName() + ": run " + (i + 1) + " failed");
}
}
System.err.println(description.getDisplayName() + ": giving up after " + retryCount + " failures");
throw caughtThrowable;
}
};
}
@Rule
public AllTests allTests = new AllTests(3);
@ClassRule
public static DockerComposeRule docker = wi.getDocker(logs);
@Override
public DockerComposeRule getDocker() {
return docker;
}
@Test
public void myFirstTest() throws Exception {
// Test code here...
}
}

我正在和Gradle一起进行JUnit测试。这是一个Java项目,它马上就失败了。我尝试了很多方法,但都无济于事。如果您愿意,很乐意提供更多详细信息。

消息很清楚:

java.lang.Exception:测试类应该只有一个公共构造函数

您将单元测试类与Rule测试类合并在同一类中:AllTests
您应该在自己的类中定义规则,并删除此构造函数:

private AllTests(int retryCount) {
this.retryCount = retryCount;
}

相关内容

最新更新