当前位置: 首页 > 知识库问答 >
问题:

JUnit Test Suit-仅包括特定测试,而不是类中的每个测试?

谷梁向荣
2023-03-14

我正在设置Junit测试套件。我知道如何使用运行类中所有测试的标准方法来设置测试套件,例如这里。

是否可以创建一个测试套件并且只运行来自几个不同类的某些测试?

如果是,我该怎么做?

共有1个答案

李俭
2023-03-14

是否可以创建一个测试套件,只运行几个不同类中的某些测试?

选项(1)(首选此选项):您实际上可以使用您可以在此处查看的类别来执行此操作

选项(2):您只需执行以下几个步骤即可完成此操作:

您需要在测试用例中使用JUnit自定义测试@规则并带有简单的自定义注释(如下所示)。基本上,规则会在运行Test之前评估所需的条件。如果满足前置条件,将执行Test方法,否则将忽略Test方法。

现在,您需要像往常一样将所有测试类添加到您的套件中。

代码如下:

我的测试条件自定义注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyTestCondition {

        public enum Condition {
                COND1, COND2
        }

        Condition condition() default Condition.COND1;
}

MyTestRule类:

public class MyTestRule implements TestRule {

        //Configure CONDITION value from application properties
    private static String condition = "COND1"; //or set it to COND2

   @Override
   public Statement apply(Statement stmt, Description desc) {

           return new Statement() {

         @Override
         public void evaluate() throws Throwable {

                 MyTestCondition ann = desc.getAnnotation(MyTestCondition.class);

                 //Check the CONDITION is met before running the test method
                 if(ann != null &&  ann.condition().name().equals(condition)) {
                         stmt.evaluate();
                 }
         }         
       };
    }
}

MyTests类别:

public class MyTests {

        @Rule 
        public MyTestRule myProjectTestRule = new MyTestRule();

        @Test
        @MyTestCondition(condition=Condition.COND1)
        public void testMethod1() {
                //testMethod1 code here
        }

        @Test
        @MyTestCondition(condition=Condition.COND2)
        public void testMethod2() {
                //this test will NOT get executed as COND1 defined in Rule
                //testMethod2 code here
        }

}

MyTestSuite类:

@RunWith(Suite.class)
@Suite.SuiteClasses({MyTests.class
})
public class MyTestSuite {  
}
 类似资料:
  • 然后尝试重新运行: -mvn test-dsurefire.suitexmlfiles=target/surefire-reports/testng-faild.xml 在这个例子中,我有3个测试,在第二个运行中,我得到以下信息: null 最大的问题是它真的在执行所有的三个测试,而我只想重新执行失败的一个。

  • 在Junit4(Eclipse)中,是否可以从测试用例中只运行一些方法(而不是全部)?我有两个测试用例,我想实现一个测试套件,其中包含一个测试用例中的所有方法(我通过向第一个测试用例中的所有测试添加@Category注释,然后在套件中使用@IncludeCategory)以及第二个测试用例中的一些方法。 非常感谢。

  • 问题内容: 我通过阅读学习测试驱动开发的概念工匠的文章(点击 工匠 下 按主题 )在回答中建议我刚才的问题,“学习JUnit和适当的软件工程样品工程”。到目前为止,我喜欢它! 但是现在我想坐下来自己尝试一下。我有一个问题,希望只需要一个简单的答案。 您如何组织JUnit测试类和实际代码? 我主要是在谈论包的结构,但是注释的任何其他概念也将有所帮助。 您是否将测试类放在org.myname.proj

  • 我正在使用Spock框架进行测试(1.0-groovy-2.4版本)。Junit提供了使用命令行(使用Maven)运行特定测试的选项: 问题:我怎样才能和斯波克做到这一点? 这个版本依赖于Junit 4.12,Junit文档中指出,只有Junit 4才支持此功能。x、 基本上,斯波克应该提出类似的建议。

  • 我想在我的项目中测试特定的测试类,因为有很多测试类失败,我只想一次测试一个类。 我在以下文件夹中创建了测试类: 因此,我尝试了以下命令,但均无效: = 有什么帮助吗?谢谢

  • 我有一个测试类,其中我有大约10个单元测试用例。在本文中,我创建了一个mock方法,它只在10个测试用例中的2个中有用。 因此,从技术上讲,我希望对8个测试用例执行方法,并对其中2个测试用例进行模拟。 有没有办法做到这一点?