我对Java很新。我构建了一个JUnit测试类,在这个文件中有许多测试方法。当我运行这个类(在NetBeans中)时,它按顺序运行类中的每个测试方法。
问题1:如何在此课程中仅运行测试方法的特定子集? (可能的答案:在@Test上面写@Ignore我希望忽略的测试。但是,如果我想指出我想要运行哪些测试方法而不是我想忽略的测试方法,有没有更方便的方法呢? )
问题2:是否有一种简单的方法可以改变各种测试方法的运行顺序?
感谢。
答案 0 :(得分:6)
你应该阅读TestSuite的内容。他们允许分组和订购您的单元测试方法。这是一个提取表单this article
“可以汇总JUnit测试类 通过创建以特定顺序运行 测试套件。
编辑:这是一个显示它有多简单的例子:
public static Test suite() {
TestSuite suite = new TestSuite("Sample Tests");
suite.addTest(new SampleTest("testmethod3"));
suite.addTest(new SampleTest("testmethod5"));
return suite;
}
答案 1 :(得分:2)
This answer告诉你该怎么做。随机化测试运行的顺序是一个好主意!
与dom farr州的评论一样,每个单元测试都应该能够独立运行。在测试运行之后或之前应该没有残留物和没有给定的要求。所有单元测试都应以任何顺序或任何子集运行。
拥有或生成测试用例的地图并不是一个糟糕的主意 - >测试列表然后随机执行所有测试。
答案 2 :(得分:0)
有很多方法,但这取决于您的具体需求。例如,您可以将每个测试方法拆分为单独的测试类,然后将它们安排在不同的测试套件中(如果需要,可以允许套件中的方法重叠)。或者,更简单的解决方案是在您的类中使用一种测试方法使您的测试方法成为普通类方法,并按特定顺序调用它们。你想要它们被动态地称为吗?
答案 3 :(得分:0)
我也没有长时间使用Java,但据我所见,没有一种方便的方法来标记执行而不是忽略的方法。相反,我认为这可以使用IDE实现。当我想在Eclipse中执行此操作时,我可以使用junit视图通过单击它们来运行单个测试。我想在Netbeans中有类似的东西。
我不知道重新排序测试执行的简单方法。 Eclipse有一个按钮,可以首先使用失败的测试重新运行测试,但听起来你想要更通用的东西。