有没有办法让Eclipse多次运行JUnit测试直到失败?
我们偶尔会有错误,它们在每个 X 运行中出现一次。在人们签入东西之前(它自动是JUnit'd),我们的开发人员需要通过Eclipse在本地传递JUnit。
有没有一些方便的方法(内置或高质量的插件)来让Eclipse运行相同的测试X次,并在出现故障时停止?只是单击“运行 X 次”的替代方法?
请注意,我正在UI中查找某些内容(例如,右键单击并说“运行X次”而不仅仅是“运行”)。
我们偶尔会有错误,它们在每个 X 运行中出现一次。在人们签入东西之前(它自动是JUnit'd),我们的开发人员需要通过Eclipse在本地传递JUnit。
有没有一些方便的方法(内置或高质量的插件)来让Eclipse运行相同的测试X次,并在出现故障时停止?只是单击“运行 X 次”的替代方法?
请注意,我正在UI中查找某些内容(例如,右键单击并说“运行X次”而不仅仅是“运行”)。
如果 for 循环有效,那么我同意 nos。
如果您需要重复整个设置-测试-拆卸,则可以使用TestSuite:
在文件中,您只需找到
addTestSuite(YourTestClass.class)
行,并将其包装在 for 循环中。
我很确定,如果您只想重复单个测试方法,则可以使用addTest而不是addTestSuite来使其仅从该类运行一个测试。
如果你真的想运行一个测试类直到失败,你需要自己的运行器。
@RunWith(RunUntilFailure.class)
public class YourClass {
// ....
}
这可以按如下方式实现...
package com.example;
import org.junit.internal.runners.*;
import org.junit.runner.notification.*;
import org.junit.runner.*;
public class RunUntilFailure extends Runner {
private TestClassRunner runner;
public RunUntilFailure(Class<?> klass) throws InitializationError {
this.runner = new TestClassRunner(klass);
}
@Override
public Description getDescription() {
Description description = Description.createSuiteDescription("Run until failure");
description.addChild(runner.getDescription());
return description;
}
@Override
public void run(RunNotifier notifier) {
class L extends RunListener {
boolean fail = false;
public void testFailure(Failure failure) throws Exception { fail = true; }
}
L listener = new L();
notifier.addListener(listener);
while (!listener.fail) runner.run(notifier);
}
}
...发布未经测试的代码,感到TDD内疚:)