有没有办法让Eclipse多次运行JUnit测试直到失败?

Uri*_*Uri 27 java eclipse junit

我们偶尔会在每次X次运行中出现一次错误.在人们检查内容(它自动为JUnit)之前,我们的开发人员需要通过Eclipse在本地传递JUnit.

是否有一些方便的方法(内置或高质量的插件)使Eclipse运行X次相同的测试并在出现故障时停止?只需单击Run X次的替代方法?

请注意,我正在寻找UI中的内容(例如,右键单击并说"Run X times"而不是"Run").

Mic*_*sch 11

如果for循环有效,那么我同意nos.

如果您需要重复整个setup-test-teardown,那么您可以使用TestSuite:

  1. 右键单击包含要重复的测试的包
  2. 转到New并选择创建JUnit测试SUITE
  3. 确保仅选择要重复的测试,然后单击完成.
  4. 编辑文件以多次运行它.

在文件中,您只需找到

addTestSuite(YourTestClass.class)
Run Code Online (Sandbox Code Playgroud)

line,并将其包装在for循环中.

我很确定你可以使用addTest而不是addTestSuite来让它只从该类运行一个测试,如果你只想重复一个测试方法.


aku*_*uhn 7

如果你真的想要运行测试类直到失败,你需要自己的跑步者.

@RunWith(RunUntilFailure.class)
public class YourClass {

    // ....

}
Run Code Online (Sandbox Code Playgroud)

可以按如下方式实施......

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);
    }

}
Run Code Online (Sandbox Code Playgroud)

...发布未经测试的代码,感觉TDD内疚:)