我是靠谱客的博主 笨笨舞蹈,最近开发中收集的这篇文章主要介绍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的原创文章,请关注公众号"汪子熙":

最后

以上就是笨笨舞蹈为你收集整理的JUnit 注解@Category的工作原理的全部内容,希望文章能够帮你解决JUnit 注解@Category的工作原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部