我想知道是否可以通过蚂蚁来阻止特定的测试。 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,但我不希望它完全运行第四个测试。
谢谢!
答案 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;
}