< 返回技术文档列表

Java中@Category注解的工作原理是什么

发布时间:2021-09-01 01:05:01⊙投诉举报

今天就跟大家聊聊有关Java中@Category注解的工作原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

Java中@Category注解的工作原理是什么

(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:

Java中@Category注解的工作原理是什么

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

Java中@Category注解的工作原理是什么

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

Java中@Category注解的工作原理是什么

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:

Java中@Category注解的工作原理是什么

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.

Java中@Category注解的工作原理是什么

看完上述内容,你们对Java中@Category注解的工作原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注血鸟云行业资讯频道,感谢大家的支持。


/template/Home/Zkeys/PC/Static