`
JerryWang_SAP
  • 浏览: 1025669 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Java JUnit框架里@Category注解的工作原理

阅读更多

Suppose you have a large number of unit test cases and you don’t want them to be executed all at the same time during Maven build. You can simply achieve it via annotation @Category.

(1) Create empty class FastTests and SlowTests. (2) In your test case class, categorize your test method using @Category annotation:

 

 

(3) Append the following code to your pom.xml:

<profiles>
        <profile>
            <id>SlowTests</id>
            <properties>
                <testcase.groups>com.sap.SlowTests</testcase.groups>
            </properties>
        </profile>
        <profile>
            <id>FastTests</id>
            <properties>
                <testcase.groups>com.sap.FastTests</testcase.groups>
            </properties>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.13</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit47</artifactId>
                        <version>2.13</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <groups>${testcase.groups}</groups>
                </configuration>
            </plugin>
        </plugins>
    </build>

(4) In my project, by default all 7 test methods will be executed during Maven build:

 

 

Suppose you only want to execute unit test belonging to category “SlowTests”, use the following command line:

 

 

Since now I only marked one method with annotation SlowTests, only one test method is executed:

 

 

If you would like to execute all unit tests EXCEPT @SlowTests, simply add another profile in pom.xml:

<profile>
            <id>NonSlowTests</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <excludedGroups>com.sap.SlowTests</excludedGroups>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

Before test, in order to prove that Slow method is NOT really executed, I add a system.out.println in each method:

 

 

Use command line: mvn test -P NonSlowTests From console output, I can ensure that the method with @Category(SlowTests.class) is NOT executed at all.

 

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

0
0
分享到:
评论

相关推荐

    Junit测试学习文档

    2. 测试分类:@Category注解可以将测试分为不同的类别,方便按需执行。 3. 参数化测试:@Parameterized可以实现基于参数集的测试,提高测试覆盖率。 4. 注册与监听:@Rule注解可以注册测试规则,如临时文件系统、...

    Junit4的应用案例

    Junit4是Java编程领域中广泛应用的一个单元测试框架,它为开发者提供了方便快捷的方式来编写和执行单元测试。本案例主要探讨Junit4在实际项目中的应用,通过具体的测试类和源代码,我们将深入理解其核心特性和优势。...

    junit基于标注的测试

    JUnit是Java开发中最常用的单元测试框架之一,它允许开发者编写可重复执行的测试用例来验证代码的正确性。在JUnit4及其后续版本中,引入了基于注解的测试,这大大简化了测试的编写,避免了在每个测试方法前都写setup...

    单元测试之道Java版-使用JUnit

    本资源包含一个PDF文档《单元测试之道Java版.pdf》,很可能是书籍的电子版,详细阐述了单元测试的基本理念、JUnit框架的使用方法以及如何编写高质量的单元测试用例。此外,还提供了一个名为“单元测试之道Java版-...

    java关于注解使用的例子

    通过学习这些例子,你可以深入理解Java注解的工作原理,如何创建和使用自定义注解,以及它们在实际项目中的应用。同时,你还可以了解注解与其他Java特性的交互,如反射和注解处理器,这将有助于提升你的Java编程技能...

    JUnit4框架jar包

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了编写和运行可重复、可靠的测试用例的强大工具。这个"JUnit4框架jar包"包含了JUnit4库的所有必要组件,使得Java开发者可以在他们的项目中集成...

    junit3.8 和junit4 api

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这里我们将深入探讨JUnit 3.8和JUnit 4两个版本的主要API及其差异。 **JUnit 3.8 API** JUnit 3.8是JUnit的...

    最新junit4,完整压缩文件,支持注解

    JUnit4 是一个广泛使用的Java编程语言的单元测试框架,它极大地简化了测试代码的编写,使得开发者能够更容易地创建和运行测试用例。这个“最新junit4,完整压缩文件,支持注解”包含了所有你需要的JUnit4库,让你能够...

    Spring_Junit

    8. **分组测试**:JUnit的`@Category`注解可以将测试分为不同的类别,便于管理和运行特定类型的测试。 9. **参数化测试**:JUnit的`@Parameterized`注解允许我们进行参数化的测试,即同一测试用例可以针对多个输入...

    Junit4.4 Junit3.8.1

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这里我们关注的是JUnit的两个不同版本:JUnit 4.4和JUnit 3.8.1。这两个版本在功能、设计和使用上都有所差异,...

    JUnit测试源码

    JUnit测试源码对于理解测试框架的工作原理、学习如何编写有效的测试以及定制JUnit行为都非常重要。在这个名为"011_JUnit4"的压缩包中,我们很可能是得到了JUnit 4版本的源代码。 JUnit 4是一个基于注解的测试框架,...

    面向程序员的Java测试框架.zip

    Java测试框架是软件开发过程中不可或缺的一部分,特别是对于程序员而言,它们能确保代码的质量,提高工作效率,及早发现和修复问题。本资料包“面向程序员的Java测试框架.zip”聚焦于如何利用Java测试框架进行有效...

    Junit_work.zip_JUnit

    JUnit是一款广泛应用于Java编程语言的单元测试框架,它使得开发者能够轻松地编写和运行可重复的测试用例,以确保代码的正确性。在本文中,我们将深入探讨JUnit的工作原理,以及如何通过它来实现白盒测试和黑盒测试。...

    JUnit4.rar

    JUnit4是一款广泛应用于Java编程语言中的单元测试框架,它使得开发者能够轻松地编写和执行针对代码功能的测试用例。这个“JUnit4.rar”压缩包包含了一组必要的JAR文件,这些文件是运行JUnit4测试所必需的。下面将...

    Junit4教程.pdf

    在Java的测试领域,JUnit框架是一个非常重要的工具,它用于编写和执行针对Java代码的单元测试。Junit4是该框架的一个重大更新,它引入了许多新特性,显著地简化了测试代码的编写,使得测试更加直观和高效。本文将...

    java程序员白盒单元测试必备技能 -- Junit4

    Junit4作为Java领域中最常用的单元测试框架,是每个Java开发者必须掌握的技能之一。这篇压缩包文件中的"Junit4教程.doc"文档,很可能是提供了一步步学习和实践Junit4的详细指导。 首先,我们需要理解什么是单元测试...

    Junit sourcecode

    同时,通过@TestCategory注解,可以对测试进行分类,便于组织和管理大规模的测试代码。 6. 错误处理与异常测试: JUnit提供了assertThrows()方法,可以捕获并验证预期的异常。这对于测试异常处理逻辑至关重要,确保...

    junit4.8.2

    JUnit 4.8.2 是一个广泛使用的开源Java测试框架,专为简化单元测试而设计。这个版本在单元测试领域中扮演着至关重要的角色,它提供了丰富的注解、断言库以及测试运行器,帮助开发者编写高效且可靠的测试代码。 1. *...

    各种版本的JUnit

    JUnit是Java编程语言中最常用的单元测试框架之一,它使得开发者能够编写可自动化执行的测试用例,以确保代码的质量和功能的正确性。这个压缩包包含的是JUnit的多个历史版本,从4.7到4.12,这些版本在不同时期对JUnit...

    JUnit单元测试技术

    JUnit是Java编程语言中最常用的单元测试框架之一,它使得开发者能够编写可重复执行的测试用例,以确保代码的功能正确性。单元测试是软件开发过程中的关键环节,它允许程序员在编码阶段就发现并修复问题,而不是等到...

Global site tag (gtag.js) - Google Analytics