Maven单元测试(四)

单元测试
test 目标执行项目中所有能在 src/test/java 找到的并且文件名与 **/Test*.java, **/*Test.java 和 **/*TestCase.java 匹配的所有单元测试。

忽略单元测试
通常,你会开发一个带有很多失败单元测试的系统。 如果你正在实践测试驱动开发(TDD),你可能会使用测试失败来衡量你离项目完成有多远。 如果你有失败的单元测试,但你仍然希望产生构建输出,你就必须告诉 Maven 让它忽略测试失败。 当Maven 遇到一个测试失败,它默认的行为是停止当前的构建。 如果你希望继续构建项目,即使 Surefire 插件遇到了失败的单元测试,你就需要设置 Surefire 的testFailureIgnore 这个配置属性为 true。
这个表达式可以从命令行通过 -D 参数设置。mvn test -Dmaven.test.failure.ignore=true

[html]  view plain copy
  1. <build>  
  2.     <plugins>  
  3.         <plugin>  
  4.             <groupId>org.apache.maven.plugins</groupId>  
  5.             <artifactId>maven-surefire-plugin</artifactId>  
  6.             <configuration>  
  7.                 <testFailureIgnore>true</testFailureIgnore>  
  8.             </configuration>  
  9.         </plugin>  
  10.     </plugins>  
  11. </build>  

 

跳过单元测试
你可能想要配置 Maven 使其完全跳过单元测试。 可能你有一个很大的系统,单元测试需要花好多分钟来完成,而你不想在生成最终输出前等单元测试完成。 你可能正工作在一个遗留系统上面,这个系统有一系列的失败的单元测试,你可能仅仅想要生成一个 JAR 而不是去修复所有的单元测试。 Maven 提供了跳过单元测试的能力,只需要使用 Surefire 插件的 skip 参数。 在命令行,只要简单的给任何目标添加maven.test.skip 属性就能跳过测试:mvn install -Dmaven.test.skip=true

[html]  view plain copy
  1. <build>  
  2.     <plugins>  
  3.         <plugin>  
  4.             <groupId>org.apache.maven.plugins</groupId>  
  5.             <artifactId>maven-surefire-plugin</artifactId>  
  6.             <configuration>  
  7.                 <skip>true</skip>  
  8.             </configuration>  
  9.         </plugin>  
  10.     </plugins>  
  11. </build>  


 

如果想跳过测试阶段,可用:
mvn package -DskipTests (只跳过测试阶段,但不跳过测试编译)

想临时性跳过测试代码的编译,可用:
mvn package -Dmaven.test.skip=true
maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin两个插件的行为,即跳过编译,又跳过测试。

指定测试类
mvn test -Dtest=RandomGeneratorTest

以Random开头,Test结尾的测试类
mvn test -Dtest=Random*Test

用逗号分隔指定多个测试用例
mvn test -Dtest=ATest,BTest

test参数必须匹配至少一个测试类,否则会报错并导致构建失败。此时可使用以下配置来指定即使没有任何测试用例也不要报错。
mvn test -Dtest -DfailIfNoTests = false


POM文件配置包含与排除测试用例,使用** / * Test.java 来匹配所有以Tests结尾的Java类。两个星号**用来匹配任意路径,一个星号*用来获取除路径风格符外的0个或多个字符。还可使用excludes来排除一些测试类。

<plugin>
    <groupId>org.apahce.maven.plugins<groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <includes>
            <include>**/*Tests.java</include>
        </includes>
    </configuration>        
</plugin>

### Maven 单元测试配置与执行方法 在 Maven 项目中进行单元测试是一项重要的开发实践,它能够帮助开发者验证代码的功能性和稳定性。以下是关于 Maven 单元测试的配置与执行方式。 #### 配置 Maven 单元测试环境 为了支持单元测试,通常需要引入 `junit` 或其他测试框架作为项目的依赖项。可以通过修改 `pom.xml` 文件来完成这一操作: ```xml <dependencies> <!-- JUnit 4 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <!-- 如果使用 JUnit 5,则替换为以下内容 --> <!-- <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.9.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.9.0</version> <scope>test</scope> </dependency> --> </dependencies> ``` 上述配置展示了如何通过 `pom.xml` 添加 JUnit 的依赖[^1]。注意 `<scope>` 被设置为 `test`,这意味着这些库仅用于测试阶段而不会被打包到最终的应用程序中。 #### 编写测试类 对于一个名为 `HelloMaven` 的类,可以为其编写对应的测试类 `TestHelloMaven` 并定义具体的测试逻辑。例如: ```java import org.junit.Test; import static org.junit.Assert.assertEquals; public class TestHelloMaven { @Test public void testAdd() { HelloMaven helloMaven = new HelloMaven(); int result = helloMaven.add(2, 3); assertEquals(5, result); // 断言 add 方法返回的结果是否正确 } } ``` 此部分描述了如何针对特定功能实现单元测试案例[^2]。 #### 执行单元测试 Maven 提供了几种不同的方式来运行单元测试: 1. **默认行为**: 当执行 `mvn clean install` 命令时,默认会触发 `maven-surefire-plugin` 插件并自动运行所有的单元测试[^3]。 2. **单独运行测试**: 使用如下命令可手动启动单个或多个测试用例: ```bash mvn test -Dtest=TestHelloMaven#testAdd ``` 此处 `-Dtest` 参数指定了要运行的具体测试类及其方法名称。 3. **跳过测试**: 若希望暂时忽略某些测试环节,在构建过程中加入参数即可: ```bash mvn clean install -DskipTests=true ``` 这样就不会中断因失败的测试而导致的整体流程。 综上所述,合理利用 Maven 和其插件可以帮助团队高效管理软件质量控制过程中的自动化测试工作流。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值