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首先识别出标记为`@RunWith`注解的测试类,如果没有使用特定的运行器,那么默认使用JUnit的运行器。 - **实例化测试类**:对于每一个测试方法,JUnit都会创建一个新的测试类实例。 - **执行...
通过使用@RunWith(Parameterized.class)注解和一些辅助方法,可以创建参数化的测试,这对于验证函数的边界条件或者多种输入情况特别有效。 此外,Junit4.7也引入了注解驱动的异常测试,通过@Expected注解,你可以...
还有`@Ignore`注解可以临时忽略某个测试,`@RunWith`用于指定运行器,如`@RunWith(Suite.class)`来组合多个测试。 其次,JUnit4支持参数化测试,这意味着一个测试方法可以使用不同的参数多次执行。`@Parameters`...
此外,还有`@Ignore`注解用于忽略某个测试,`@RunWith`用于指定运行器,比如`@RunWith(Parameterized.class)`可以实现参数化测试。 2. **断言改进**:JUnit 4.4提供了更多的断言方法,如`assertEquals`、`...
首先,Runner的启动通常是由`@RunWith`注解触发的。开发者可以自定义Runner类,通过`@RunWith`指定,这样JUnit在运行测试时会使用这个自定义的Runner。例如: ```java @RunWith(MyCustomRunner.class) public class...
`junit-4.11-sources.jar` 则包含了JUnit 4.11源代码,这对于学习和理解JUnit的工作原理非常有帮助。通过查看源码,开发者可以深入探究JUnit的内部实现,如测试监听器、测试装饰器、异常处理机制等。这有助于在遇到...
当我们使用 `@RunWith(SpringRunner.class)` 注解时,SpringRunner 会接管测试的执行流程,使得在 JUnit 的基础上,能够利用 Spring 的依赖注入、AOP 等特性。 在 SpringRunner 中,Spring 会通过 `@...
7. **测试套件(Test Suites)**:可以使用`@RunWith(Suite.class)`注解来组织多个测试类成一个测试套件,方便批量运行和管理测试。 8. **规则(Rules)**:JUnit4.8.2引入了规则的概念,比如`TemporaryFolder`规则...
例如,@Ignore注解可以暂时跳过某个测试,@RunWith注解允许我们自定义测试运行器以扩展测试行为。参数化测试(@Parameterized)使得一个测试方法能用多种输入数据运行,提高了测试覆盖率。还有模拟对象(Mock ...
在实际开发中,我们可以使用`@Ignore`注解来跳过某个测试,`@RunWith`注解来指定测试运行器,比如`Suite`类,它可以将多个测试类组合在一起作为一个测试套件来运行。 对于那些需要更细粒度控制测试执行流程的场景,...
1. **测试方法的编写**:通过`@Test`注解标记测试方法,测试类通常继承自`org.junit.runner.RunWith`,例如`RunWith(JUnit4.class)`,表明该类使用JUnit 4运行器。 2. **异常断言**:使用`assertThrows()`方法检查...
在这个“junit实例demo”中,我们将会深入理解JUnit的工作原理及其核心特性。 1. **JUnit简介** JUnit是开源的、基于Java的测试框架,它遵循XUnit测试框架的设计模式。它简化了对Java代码进行单元测试的过程,通过...
这篇分析可能是从源码层面或实际应用角度来解析JUnit的工作原理和使用技巧。 描述中虽然没有具体信息,但根据博文链接(https://orange5458.iteye.com/blog/1305042)我们可以推测,该博客可能涵盖了以下JUnit相关...
通过使用@RunWith(Parameterized.class)和@Parameters注解,我们可以创建参数化的测试类。 5. 测试套件与分类: JUnit支持测试套件(Test Suite),可以将多个测试类组合在一起,一次性运行。同时,通过@Test...
JUnit测试源码对于理解测试框架的工作原理、学习如何编写有效的测试以及定制JUnit行为都非常重要。在这个名为"011_JUnit4"的压缩包中,我们很可能是得到了JUnit 4版本的源代码。 JUnit 4是一个基于注解的测试框架,...
`@RunWith`注解允许我们使用自定义的测试运行器(Runner),比如`Parameterized`测试运行器,可以进行参数化测试,同一个测试方法可以针对不同的输入数据执行多次。 在错误处理方面,JUnit4提供`@Expected`注解,...
1. 创建测试类:继承自JUnit的`TestCase`类,或者使用`@RunWith`注解指定运行器,如`RunWith(JUnit4.class)`。 2. 编写测试方法:在方法前添加@Test注解,方法内部编写测试逻辑。 3. 运行测试:通过IDE的测试运行...
在 JUnit 中,可以通过 `TestSuite` 类或使用 `@RunWith` 和 `@Suite` 注解来定义测试套件。 #### 三、JUnit单元测试的使用方法 1. **安装JUnit** 安装 JUnit 相对简单,只需将 JUnit 的 `.jar` 文件添加到项目...
5. **扩展性**:JUnit 4.12允许开发者创建自己的测试装饰器(Test Decorators),通过`@RunWith`注解来指定运行器,这增强了框架的可扩展性。 6. **假设(Assumptions)**:`Assume`类提供了假设方法,允许在测试...
JUnit 4.12支持断言(Assertions)进行结果验证,如`assertEquals()`、`assertTrue()`等,还提供了各种测试注解,如`@Ignore`用于忽略特定测试,`@Category`用于分类测试,`@RunWith`指定运行器等。此外,它还集成了...