• 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的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    第一阶段冲刺——4
    Day 1 测试流程--H模型
    【疑问】待解决
    Zookeeper 入门(一)
    【基础组件1】Flume入门(一)
    埋点测试、埋点接口测试
    单点登录 VS 多点登录
    web系统原理
    测试用例总结篇(一)
    功能测试心得(二)
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/13607043.html
Copyright © 2020-2023  润新知