有没有办法停在junit蚂蚁

时间:2011-03-31 01:41:57

标签: java ant junit

我想知道是否可以通过蚂蚁来阻止特定的测试。 EX:我有以下树形结构:

test
  package1
    TU_file1.java
    TU_file2.java
  package2
    TU_file3.java
    TU_file4.java

我想知道我是否通过junit运行ant,有没有办法可以运行file1,2,3并在那里停止。我希望能够在运行第4个失败的测试单元之前抓取数据库。在第4次测试之前我想要一个完美的环境。有没有办法用filesets或patternsets实现这一点。我知道有一个选项failonerror,但我不希望它完全运行第四个测试。

谢谢!

3 个答案:

答案 0 :(得分:0)

Ant解决方案是将文件集添加到junit任务:

<fileset dir="${src.tests}">
  <include name="**/TU_file*.java"/> <!-- or some other all inclusive pattern -->
  <exclude name="**/package2/TU_file4.java"/> <!-- exclude TU_file4.java -->
</fileset>

JUnit 4.x解决方案是将@Ignore注释添加到要排除的任何测试中。

编辑:如果要在执行TU_file4之前暂停执行,请添加等待来自System.in的输入的@BeforeClass方法。

答案 1 :(得分:0)

在Ant构建文件中,在调用<junit>任务时,可以让它包含一个<fileset>元素,该元素可以定义通过模式匹配运行的测试。对于您的示例,您可以在<fileset>中定义资源以专门排除TU_file4.java。有关详细信息,请参阅Apache documentation for the Ant JUnit Task

那就是说,你的单元测试的最佳实践是他们完成后不应该留下任何残余物。

答案 2 :(得分:0)

您是否考虑过java调试模式?这可能是通过远程调试在断点处暂停执行的一个很好的选择。

例如为:  
   

编辑:

套件应始终按照您指定的顺序运行。 如果要对@Test方法进行排序,则必须创建自己的TestRunner(扩展BlockJUnit4ClassRunner#computeTestMethods)。 伪代码:

  @Override
  public List computeTestMethods()
  {
    List myList = super.computeTestMethods();
    Collections.sort(myList, new MyTestMethodComaparator());
    return myList;
  }