Java 如何在JUnit测试类中运行(或更改)特定测试方法的顺序?

Java 如何在JUnit测试类中运行(或更改)特定测试方法的顺序?,java,junit,Java,Junit,我对Java相当陌生。我构建了一个JUnit测试类,在这个文件中有许多测试方法。当我运行这个类(在NetBeans中)时,它会按顺序运行类中的每个测试方法 问题1:如何在这个类中只运行特定的测试方法子集? (可能的答案是:为我希望忽略的测试写@Ignore over@Test。但是,如果我想指出我想要运行哪些测试方法,而不是那些我想要忽略的测试方法,有没有更方便的方法呢?) 问题2:是否有一种简单的方法可以改变各种测试方法的运行顺序 谢谢。你应该读一读关于的。它们允许对单元测试方法进行分组和排序

我对Java相当陌生。我构建了一个JUnit测试类,在这个文件中有许多测试方法。当我运行这个类(在NetBeans中)时,它会按顺序运行类中的每个测试方法

问题1:如何在这个类中只运行特定的测试方法子集? (可能的答案是:为我希望忽略的测试写@Ignore over@Test。但是,如果我想指出我想要运行哪些测试方法,而不是那些我想要忽略的测试方法,有没有更方便的方法呢?)

问题2:是否有一种简单的方法可以改变各种测试方法的运行顺序

谢谢。

你应该读一读关于的。它们允许对单元测试方法进行分组和排序。这是一份摘录表格

“JUnit测试类可以汇总 通过创建以特定顺序运行 测试套件

编辑:下面是一个示例,展示了它有多简单:

 public static Test suite() { 
      TestSuite suite = new TestSuite("Sample Tests");

      suite.addTest(new SampleTest("testmethod3"));
      suite.addTest(new SampleTest("testmethod5"));

      return suite; 
 }

实现这一点的方法有很多,但这取决于您的具体需求。例如,您可以将每个测试方法拆分为单独的测试类,然后将它们安排在不同的测试套件中(如果需要,这将允许套件中的方法重叠)。或者,一个更简单的解决方案是使您的测试方法成为普通类方法,类中有一个测试方法按您的特定顺序调用它们。是否希望动态调用它们?

告诉您如何执行。随机化测试运行的顺序是一个好主意

与dom farr的评论一样,每个单元测试都应该能够独立运行。在测试运行之后或之前,不应该有任何残差和给定的要求。所有单元测试都应该以任何顺序或任何子集通过运行


拥有或生成测试用例-->测试列表的映射,然后随机执行所有测试,这不是一个糟糕的主意。

我也没有使用Java那么久,但据我所知,没有一种方便的方法来标记要执行的方法而不是忽略的方法。相反,我认为这可以通过使用IDE实现。如果我不想的话o在Eclipse中做到这一点,我可以使用junit视图通过单击来运行各个测试


我不知道有什么简单的方法可以重新安排测试执行顺序。Eclipse有一个按钮,可以首先在失败的测试中重新运行测试,但听起来你想要更通用的方法。

当你说方法时,你是在说测试方法吗?为什么顺序很重要?每个单元测试应该能够独立运行。这通常是一种测试味道根据执行顺序,测试应该是无状态的。是的,通过方法,我应该编写测试方法。@dom farr:也许我做错了什么,但我想测试更改测试方法调用的顺序是否会导致任何问题/错误。您的示例将运行SampleTest.class中的所有测试方法。但是,如果ampleTest.class我有各种测试方法[testmethod1()、testmethod2()、…],我只需要运行testmethod3()和testmethod5();这可能吗?@K McCoy:我编辑了我的示例以满足您的要求:)我测试了上述代码并注意到两件事:(1)第一行应该是:公共静态TestSuite(){(2)在类SampleTest中,需要定义构造函数
public SampleTest(字符串名称){super(名称);}
否则,这就帮了我的忙。谢谢!我已经尝试执行上述代码,但是我得到了“构造函数SampleTest(字符串)未定义”“.这里有什么我遗漏的吗?我也读过,所以如果你能帮我解决这个问题,我会非常高兴。”