一尘不染

JUnit参数化测试:如何仅从IntelliJ / Eclipse运行1个特定测试?

java

我有一个@Parameterizedjunit测试,它产生了50个测试:

@RunWith(Parameterized.class)
public class NurseRosteringSolveAllTurtleTest ... {

    @Parameterized.Parameters(name = "{index}: {0}")
    public static Collection<Object[]> getSolutionFilesAsParameters() {
        return ... // returns 50 Files.
    }

    public NurseRosteringSolveAllTurtleTest(File unsolvedDataFile) {
        ...
    }

    ...

    @Test
    public void solveDataFile() {
        ...
    }

}

运行它需要一个小时(并且不可能缩短时间,它们是集成测试)。测试28失败。

如何单独运行测试28,而不运行其他49个测试?只需更改-DIntelliJ(或Eclipse)运行配置中的或类似内容,而无需更改实际代码。


阅读 246

收藏
2020-12-03

共1个答案

一尘不染

Eclipse现在(从Mars M4版本开始)不仅可以运行Parameterized测试类中的单个测试,还可以运行任何类型的子树。

可以是:

  • @Parameterized方法返回的单个数据集的所有方法
  • 单个@Test方法的所有数据集

而且,正如已经提到的,还可以通过在启动配置文件中的“方法”文本中输入测试名称来指定测试。将存在一个标记,指示该方法不存在,但无论如何该测试都将运行。

有关详细信息,请参见此博客文章

2020-12-03