单元测试系列:一、了解spring boot单元测试

一、java 单元测试框架

java当前主流的测试框架有两个:JUnit、TestNG。

1、两者相同点

  • 使用annotation,且大部分annotation相同。
  • 都可以进行单元测试(Unit test)。
  • 都是针对Java测试的工具。

2、两者不同点

  • JUnit只能进行单元测试,TestNG可以进行单元测试,功能测试,端到端测试,集成测试等,主要是因为testNG存在depends可以进行测试用例的组合;
  • TestNG需要一个额外的xml配置文件,配置测试的class、method甚至package。
  • TestNG的运行方式更加灵活:命令行、ant和IDE,JUnit只能使用IDE。TestNG有自己的命令行执行方式。
  • TestNG的annotation更加丰富和易懂,比如@ExpectedExceptions、@DataProvider等。
  • 测试套件运行失败,JUnit 会重新运行整个测试套件。TestNG运行失败时,会创建一个XML文件说明失败的测试,利用这个文件执行程序,就不会重复运行已经成功的测试。

二、JUnit框架

大部分开发人员,一般使用的应该是Junit,主要使用两个版本:JUnit4与JUnit5。JUnit5的目标是采用Java8的编程风格并且比JUnit4更加健壮和灵活。

1、两者注解对比

特性JUnit4JUnit5
声明一个测试方法@Test@Test
在当前类的所有测试方法执行前要执行的方法@BeforeClass@BeforeAll
在当前类的所有测试方法执行后要执行的方法@AfterClass@AfterAll
每个测试方法执行前要执行的方法@Before@BeforeEach
每个测试方法执行后要执行的方法@After@AfterEach
忽略某个测试方法或测试类@Ignore@Disabled
动态测试用例生成工厂无此特性@TestFactory
嵌套测试无此特性@Nested
标记与过滤@Category@Tag
注册定制扩展点无此特性@ExtendWith

2、两者对JDK的要求

JUnit4需要Java5或以上版本。
JUnit5需要Java8或以上版本。

3、两者架构不同

JUnit4把所有的代码都打包到一个jar包。
JUnit5由3个子模块构成:JUnit Platform、JUnit Jupiter和JUnit Vintage。

4、两者覆盖场景不同

JUnit5能支持静态方法、Final方法、私有方法的Mock等等。

三、Spring Boot对JUnit框架的集成

1、Spring Boot 集成JUnit

Spring Boot项目需要单元测试,只需要引入spring-boot-starter-test即可。

2、Spring Boot 集成JUnit的对应版本关系

Springboot >=2.2.X 支持版本为JUnit5;

Springboot <2.2.X   支持版本为JUnit4。

3、JUnit5对JUnit4的兼容方式

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>

依赖排除说明:

(1) 这个是JUnit5中为了支持使用JUint4所做的一个过度,也就是说,你只需要在你的JUnit4旧项目中添加这个依赖, 就能完美过渡,而不用修改之前代码。

(2) 如果要在大于springboot 2.2.x版本使用junit4,上述的依赖排除删掉,还需手动引入junit4的jar包因为2.2.x只有junit5依赖。

4、spring-boot-starter-test的依赖库

1JUnit 5:兼容 JUnit 4,Java 应用程序单元测试的事实标准
2Spring Test 和 SpringBootTest:对Spring Boot应用程序的公共和集成测试支持
3AssertJ:流式断言库
4Hamcrest:匹配对象库
5Mockito:Java 模拟框架
6JSONassert:JSON 断言库
7JsonPath:JSON XPath

参考资料

https://www.cnblogs.com/mzc1997/p/14306538.html

JUnit4和JUnit5的主要区别_junit4和junit5的区别_pilaf1990的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值