在SpringBoot中编写Mock单元测试

本文介绍了如何在SpringBoot应用中编写Mock单元测试,包括新建测试类、添加依赖、理解Mock概念以及Mockito的常用方法。Mockito是一个流行的Java单元测试框架,允许创建mock对象来模拟真实对象的行为,以便于测试。文中详细讲解了@Test、@Before、@After等注解的作用,并展示了Mock和Spy的使用示例。
摘要由CSDN通过智能技术生成

1. 新建测试类

在IDEA中写好的类中,右建GO TO,选择TEST,如果没有对应的单元测试类就选择创建。

在创建该类的单元测试类前,先讲一下这几个基本注解:

@Test:使用该注解标注的public void方法会表示为一个测试方法;
@BeforeClass:表示在类中的任意public static void方法执行之前执行;
@AfterClass:表示在类中的任意public static void方法之后执行;
@Before:表示在任意使用@Test注解标注的public void方法执行之前执行;
@After:表示在任意使用@Test注解标注的public void方法执行之后执行;

2. 添加依赖

新建的springBoot项目中默认包含了spring-boot-starter-test的依赖,如果没有包含可自行在pom.xml中添加依赖。

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

3. Mock的概念

所谓的mock就是创建一个类的虚假的对象,在测试环境中,用来替换掉真实的对象,以达到两大目的:

  1. 验证这个对象的某些方法的调用情况,调用了多少次,参数是什么等等
  2. 指定这个对象的某些方法的行为,返回特定的值,或者是执行特定的动作

使用Mock之前,需要在@Before或@BeforeClass对应的方法中添加如下,表示添加mock注解初始化。

MockitoAnnotations.initMocks(this);

另外需要补充以下几个常用的测试注解:

  • @InjectMocks:通过创建一个实例,它可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。

  • @Mock:对函数的调用均执行mock(即虚假函数),不执行真正部分。

  • @Spy:对函数的调用均执行真正部分。

Mockito中的Mock和Spy都可用于拦截那些尚未实现或不期望被真实调用的对象和方法,并为其设置自定义行为。二者的区别在于Mock不真实调用,Spy会真实调用。

  • @mock与@spy使用示例

(1)被测试类

class ExampleService {
   
  
    int add(int a, int b) 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot进行单元测试可以帮助我们快速发现代码问题、测试业务逻辑和提高代码质量。下面介绍一些常用的单元测试框架和方法。 1. JUnit JUnit是Java最流行的单元测试框架之一,也是Spring Boot默认提供的测试框架。我们可以使用JUnit编写测试用例,并使用注解@Before、@After、@Test等来进行测试。 2. Mockito Mockito是一个流行的Java测试框架,用于创建和使用模拟对象。在Spring Boot,我们可以使用Mockito来模拟依赖对象,并进行测试。例如,我们可以使用@Mock注解来创建一个模拟对象,然后使用@InjectMocks注解来注入依赖对象。 3. Spring Test Spring Test是Spring Boot提供的测试框架,用于测试Spring应用。它提供了一些注解和工具来方便测试Spring应用,例如@SpringBootTes、@MockBean、@WebMvcTest等。 在Spring Boot,我们可以使用以上测试框架来进行单元测试。通常情况下,我们会编写测试用例来测试Controller、Service、Repository等组件。测试用例通常需要包含以下内容: 1. 测试方法的输入和输出 测试方法应该接收一些输入数据,并且能够返回正确的输出数据。 2. 测试边界条件 测试方法应该测试一些边界情况,例如空值、空列表、最大值、最小值等。 3. 测试异常情况 测试方法应该测试一些异常情况,例如空指针异常、数组越界异常等。 下面是一个使用JUnit进行单元测试的例子: ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; public class MyServiceTest { @Test public void testAdd() { MyService service = new MyService(); int result = service.add(1, 2); assertEquals(3, result); } } ``` 在上面的例子,我们使用JUnit编写一个测试用例,测试了MyService类的add()方法。我们使用assertEquals()方法来判断方法的返回值是否正确。 总的来说,在Spring Boot进行单元测试非常重要,可以帮助我们提高代码质量和测试覆盖率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值