我有一个@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的)运行配置类似什么的。
Eclipse是现在(如火星M4释放)能够运行从参数测试类不只是一个单一的测试,但任何一种树的。
这可以是:
- 所有方法用于单个数据由作为返回设定@参数法
- 所有数据集为一个@试验方法
正如已经提到的,测试也可以通过输入测试命名为启动配置中提出的“法”文本中指定。 会有这表明该方法不存在的盯防,但是测试将要运行。
请参见本博客文章的详细信息。
我只是一个简单的参数测试总是在测试#4测试失败,这在Eclipse中。 一个是能够对失败的测试右键单击并选择运行 。 只有测试,然后执行。
![](https://www.manongdao.com/static/images/pcload.jpg)
结果:
![](https://www.manongdao.com/static/images/pcload.jpg)
无奈的是,我不能看看Eclipse做来解决这个问题。 没有什么是显然改变了运行配置。 特别是,如果你选择运行配置第二次,它执行所有的测试。
一些进一步的测试表明,Eclipse会重新生成所有10的参数值,但仅使用了第4个值。 (这是由嵌入在打印语句确定@Parameters
法)。
不知道这是否会帮助,但你可以试试,我用Eclipse和JUnit测试参数使用的伎俩。
在“测试方法”字段中JUnit启动配置,你可以写的参数化测试的全名,在你的榜样应该是这样的“solveDataFile [28:/路径/到/你/文件]”。 Eclipse会抱怨方法不存在,但是仍然会午餐它成功。
对于测试前(27至28)的一个子集只需添加:
`.subList( startInclusive, stopExclusive );`
回国前,你的参数集合。
非连续的子集:
Collection<Object[]> c = Arrays.asList( data ).subList( startInclusive, stopExclusive );
c.add( another subset );
return c;
同样米格尔的答案,如果你使用JUnit 5点的
@ParameterizedTest
@CsvFileSource(resources = arrayOf("/sender.csv"))
你可以去你的csv文件,并通过在前面加上“注释”部分线路#
字符给他们。
文章来源: JUnit parameterized tests: how do I run only 1 specific test from IntelliJ/Eclipse?