Maven工程使用Junit进行单元测试

本文介绍了如何在Maven工程中使用Junit进行单元测试,包括仅依赖Junit的测试方法和结合Maven Surefire Plugin的测试方式。详细讲解了Surefire Plugin的配置,如如何指定测试类和排除测试类,并提供了相关参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.仅利用Junit测试

pom中添加Junit依赖,当前最新版本4.12。

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

Junit官网地址:http://junit.org/junit4/ ,目前普遍使用的是Junit4,下一代Junit5也发布了先导版本,有兴趣可以自行了解。

编写待测试类Caculate.java

package com.loongshawn.task;

public class Caculate {

    public int plus(int a,int b){
        return a + b;
    }

    public int minus(int a,int b){
        return a - b;
    }
}

在Test包下编写测试类:

package com.loongshawn;

import com.loongshawn.task.Caculate;
import org.junit.Test;

public class CaculateTest {

    @Test
    public void plusTest(){

        Caculate caculate = new Caculate();
        System.out.println(caculate.plus(3,2));
    }

    @Test
    public void minusTest(){

        Caculate caculate = new Caculate();
        System.out.println(caculate.minus(3,2));
    }
}

进入项目根路径,执行mvn test命令,其结果如下,也能够完成单元测试:

ocalhost:quartz-springboot xiaolong$ mvn test
...
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.loongshawn.CaculateTest
5
1
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec - in com.loongshawn.CaculateTest

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.145 s
[INFO] Finished at: 2017-08-04T13:32:36+08:00
[INFO] Final Memory: 15M/226M
[INFO] ------------------------------------------------------------------------

2.利用Maven Surefire Plugin+Junit测试

Surefire插件用来在maven构建生命周期的test阶段执行一个应用的单元测试,可以运行Junit写得单元测试。它会产生两种不同形式的测试结果报告:

  • 1).纯文本
  • 2).xml文件格式的

默认情况下,这些文件生成在工程的${basedir}/target/surefire-reports,目录下(basedir指的是pom文件所在的目录)。

这里写图片描述

这里写图片描述

Maven Surefire Plugin与Junit间的搭配关系如下:

if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value
        use junit47 provider
if JUnit >= 4.0 is present
        use junit4 provider
else
        use junit3.8.1

可以看出,Surefire插件看到的JUnit仅三个版本如下,至于具体选用哪个版本,依实际配置而定。

  • JUnit 3.8.x
  • JUnit 4.x (surefire提供串行执行的provider)
  • JUnit 4.7 (surefire提供支持并行执行的provider)

接下来,配置Maven Surefire Plugin,Junit沿用上面的版本。

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit47</artifactId>
                        <version>2.20</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>

开始测试,测试内容同上,结果也同上。咱重点关注Surefire的一些常用特性。

2.1仅测试指定类

默认mvn test命令是全局测试,如果仅需要对其中部分用例测试,则添加一个includes属性,其值为具体java类名,多个以逗好间隔。

        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20</version>
                <configuration>
                    <includes>
                        <include>PlusTest.java,CaculateTest.java</include>
                    </includes>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit47</artifactId>
                        <version>2.20</version>
                    </dependency>
                </dependencies>
            </plugin>

console输出:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.loongshawn.CaculateTest
5
1
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in com.loongshawn.CaculateTest
[INFO] Running com.loongshawn.PlusTest
9
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in com.loongshawn.PlusTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.489 s
[INFO] Finished at: 2017-08-04T16:02:28+08:00
[INFO] Final Memory: 23M/216M
[INFO] ------------------------------------------------------------------------

也可以排除部分类不测试则利用excludes属性,详情参考http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

3.参考

1、Maven Surefire Plugin官网
2、Maven Surefire Plugin属性使用说明

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值