单元测试(系列1):Springboot整合JUnit5框架


友情提醒:

先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。

第一章、快速了解JUnit单元测试

1.1)JUnit单元测试和集成测试的区别

①JUnit是什么:
一种帮助我们编写测试的标准测试框架。

②JUnit单元测试是什么:
针对方法(最小功能单元)的测试,针对代码中的单个模块或函数进行测试验证这些模块或函数的行为是否符合预期,单元测试通常在一个隔离的环境中运行,不依赖外部资源,例如数据库、网络等,以确保测试结果的稳定性和可重复性。由程序员自己写。

③JUnit集成测试是什么:
会加载Spring上下文,同时用于验证多个模块或组件之间的交互和集成后的行为。集成测试可能涉及到数据库、文件系统、网络等外部资源,以确保整个系统的各个部分能够协同工作,达到预期的功能和性能要求。

1.2)使用JUnit测试框架的原因

①在主方法中调用测试
不使用单元测试时,我们测试一个方法能否成功运行,我们会在主方法里调用这个方法,看看控制台的运行结果。

public class Test {
    public static void main(String[] args) {
        System.out.println(Test(1));
    }
    public static int Test(int i){
        return ++i;
    }
}

②直接将代码写在主方法
或者更直接的把需要测试代码放到主方法里,看能不能运行成功。

public class Test {
    public static void main(String[] args) {
            System.out.println("test");
    }
}

以上两种的局限性:
1、只有一个main方法无法有组织有层次的测试不同的方法。
2、测试的输出结果不够直观。
所以我们需要专门的JUnit来编写单元测试避免这些局限性。

第二章、Springboot中JUnit5框架示例

2.1)在pom文件中导入依赖

SpringBoot2.2x之后的版本中spring-boot-starter-test包中,默认集成了JUnit5依赖包,Mockito: Java Mock框架依赖,AssertJ流式断言依赖包等,所以正常来说我们不需要再导入关于单元测试的依赖包了。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

版本关系如图:对静态类进行mock的时候:mockito-core的版本要在3.4以上。

在这里插入图片描述

2.2)新建测试类

①查看扫描路径是否正确

如果不正确需要手动添加:File-project structure–>moudles–>选中想要的模块–>Sources–>test下的java文件夹右击设置为tests

在这里插入图片描述

②快速生成测试类
选中需要测试的service包中类的类名,右键选择Generate

在这里插入图片描述

选择Test

在这里插入图片描述

③勾选以下配置选项:
1、选择JUnit5。
2、测试类的命名规范为BidInfoServiceImpl类名后面加Test也就是BidInfoServiceImplTest。3、我们需要在test包下建立相同的路径
4、勾选setUp/@Before
5、勾选需要测试的方法
6、选择OK

在这里插入图片描述

④查看test下的路径
已经替我们生成了对应的测试类了

在这里插入图片描述

2.3)新建测试方法

①测试BidInfoServiceImpl类中的fact方法

public class BidInfoServiceImpl implements BidInfoService {
 public int fact(int i){
        int a=++i;
        return a;
    }
}

②添加注解
@ExtendWith注解在刚刚新建的BidInfoServiceImplTest测试类上面@InjectMock注释在要测试的实现类上,
@Test注释在测试的方法上


// 在junit4的时候使用@Runwith注解,在junit5的时候使用的是@ExtendWith(MockitoExtension.class)注解

@ExtendWith(MockitoExtension.class)
//@RunWith(MockitoJUnitRunner.class)
public class BidInfoServiceImplTest {
    @InjectMocks
    BidInfoServiceImpl bidInfoServiceImpl;

    @Test
    public void testFact(){
//第一个参数是预期结果:2。第二个参数是需要测试的方法,传入值1
        assertEquals(2,bidInfoServiceImpl.fact(1));
        assertEquals(4,bidInfoServiceImpl.fact(3));
    }
}

③运行测试方法
右键红框处,点击RUN运行,assertEquals()方法中第一个参数是预期结果2。第二个参数是需要测试的方法,传入参数1
在这里插入图片描述
④测试通过(即结果与预期相符)
出现如下提示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值