JUnit的参数化测试:我怎么只运行1从的IntelliJ / Eclipse的特定测试?(JUni

2019-09-02 19:22发布

我有一个@Parameterized JUnit测试的滋生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个测试? 在不改变实际的代码,通过简单的配置-D中的IntelliJ(或Eclipse的)运行配置类似什么的。

Answer 1:

Eclipse是现在(如火星M4释放)能够运行从参数测试类不只是一个单一的测试,但任何一种树的。

这可以是:

  • 所有方法用于单个数据由作为返回设定@参数法
  • 所有数据集为一个@试验方法

正如已经提到的,测试也可以通过输入测试命名为启动配置中提出的“法”文本中指定。 会有这表明该方法不存在的盯防,但是测试将要运行。

请参见本博客文章的详细信息。



Answer 2:

我只是一个简单的参数测试总是在测试#4测试失败,这在Eclipse中。 一个是能够对失败的测试右键单击并选择运行 。 只有测试,然后执行。

结果:

无奈的是,我不能看看Eclipse做来解决这个问题。 没有什么是显然改变了运行配置。 特别是,如果你选择运行配置第二次,它执行所有的测试。

一些进一步的测试表明,Eclipse会重新生成所有10的参数值,但仅使用了第4个值。 (这是由嵌入在打印语句确定@Parameters法)。



Answer 3:

不知道这是否会帮助,但你可以试试,我用Eclipse和JUnit测试参数使用的伎俩。

在“测试方法”字段中JUnit启动配置,你可以写的参数化测试的全名,在你的榜样应该是这样的“solveDataFile [28:/路径/到/你/文件]”。 Eclipse会抱怨方法不存在,但是仍然会午餐它成功。



Answer 4:

对于测试前(27至28)的一个子集只需添加:

`.subList( startInclusive, stopExclusive );`

回国前,你的参数集合。

非连续的子集:

Collection<Object[]> c = Arrays.asList( data ).subList( startInclusive, stopExclusive );
c.add( another subset );
return c;


Answer 5:

同样米格尔的答案,如果你使用JUnit 5点的

@ParameterizedTest
@CsvFileSource(resources = arrayOf("/sender.csv"))

你可以去你的csv文件,并通过在前面加上“注释”部分线路#字符给他们。



文章来源: JUnit parameterized tests: how do I run only 1 specific test from IntelliJ/Eclipse?