Junit - 覆盖默认行为以仅运行一次测试,即使它们被多次添加(在不同的套件中)

时间:2016-06-17 09:44:56

标签: java unit-testing junit

对于我们的用例,作为示例 - 我们需要运行JUnit测试,即使它在Test Suite中多次添加,也不会被跳过。

目前我们注意到,如果JUnit测试运行器在测试套件中的其他位置找到测试,则会跳过具有相同名称的测试。这是一个示例屏幕截图,显示测试" Case_A"在" Procedure_A"在测试套件中被跳过 -

enter image description here

是否可以覆盖此行为,若有人可以指出我们正确的方向?

1 个答案:

答案 0 :(得分:0)

我做了一些关于这个问题的研究。

简单设置 - 一个测试“TestCase_A”和一个套件“TestProcedure_A”运行TestCase_A两次:

public class TestCase_A {

@Test
public void test() throws Exception {
    System.out.println("Case_A RUN");
    Assert.assertTrue(true);
  }
}
@RunWith(Suite.class)
@Suite.SuiteClasses({ TestCase_A.class, TestCase_A.class })
@SuppressWarnings("all")
public class TestProcedure_A {
}

我使用Eclipse和maven运行测试套件。 查找:sysout语句实际显示,TestCase_A运行两次!

因此,Eclispe View具有误导性。测试多次运行 - 树也反映了这一点。但是,在Eclispe Junit视图中无法正确显示实际单个调用的状态。

我认为该视图基于 junit.runner.TestRunListener 。它可能值得研究。