关于SpringBoot中的Test无法运行的总结

package com.sia.test01;

import com.sia.dao.MemberDao;
import com.sia.model.MemberModel;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

public class MemberDaoTests {
    @Autowired
    private MemberDao dao;
    @Test
    public void testMemberDao(){
        MemberModel memberModel = dao.selectMemberById(1);
        System.out.println(memberModel);
    }
}

上述代码就是今天在写springboot的时候,在使用test测试mapper层的接口的时候,总是出现空指针,一开始是在mapper层的接口上面没有添加自动装配的注解:
顺便扩展一下学过得知识,同时也是面试题:

  • @Resource
    • 这个注解是jdk中的注解,需要导包,默认是按byName的方式进行注入的
  • @Autowired
    • 这个注解是springboot提供的注解,默认是按byType的方式进行注入的,被该注解修饰的bean对象一定要包含在ioc容器中,如果没有,需要加上required=false,这样的一个属性,表示忽略当前要注入的bean,如果有直接注入,没有则跳过,不会报错

怎样解决这个问题呢?

我翻看了原来的代码,发现要保证test方法能够正常执行,需要在测试类的上面加上两个注解

@SpringBootTest
@RunWith(SpringRunner.class)
public class MemberDaoTests {
    @Autowired
    private MemberDao dao;
    @Test
    public void testMemberDao(){
        MemberModel memberModel = dao.selectMemberById(1);
        System.out.println(memberModel);
    }
}

上面这两个注解是什么意思呢?有什么作用呢?

  • @SpringBootTest:这个注解表示该类是SpringBoot的测试类
  • @RunWith(SpringRunner.class):这个注解表示的是,启动一个单元测试类

通常情况下,以上两个注解是放在一起使用的,并且一个好的编程习惯就是,每写完一层代码,都应该像这样做测试,保证每一层都能够正常运行,不要等到最后做到了控制层,最后测不通又找不到原因

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot项目的单元测试是通过使用Spring Boot提供的单元测试框架spring-boot-test来实现的。这个单元测试框架主要依赖于著名的测试框架JUnit。在创建Spring Boot项目时,会默认添加spring-boot-starter-test作为项目的依赖项,可以在pom.xml文件找到相关信息。 进行Spring Boot项目的单元测试可以按照以下步骤进行: 1. 确认项目已经内置了测试框架spring-boot-test。 2. 生成单元测试的类,通常是在项目的测试目录下创建一个与被测试类对应的测试类。 3. 在测试类使用@SpringBootTest注解来标记该类是一个Spring Boot的单元测试类,这样就可以使用Spring Boot的特性进行测试。 4. 添加单元测试的业务代码,即在测试类编写测试方法,用于测试被测类的各个方法的功能是否正常。 5. 可以使用断言来验证测试结果是否符合预期。断言是一种用于判断测试结果是否符合预期的方法。 通过以上步骤,就可以完成Spring Boot项目的单元测试。这样可以保证项目的各个模块的功能正常运行,并提前发现和修复可能存在的问题,确保项目的质量和稳定性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot单元测试(unit testing)](https://blog.csdn.net/m0_58157267/article/details/126296460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring Boot 单元测试](https://blog.csdn.net/m0_58761900/article/details/128821538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值