关于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):这个注解表示的是,启动一个单元测试类

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

Spring Boot项目创建测试的步骤如下所示: 1. 首先,需要在项目的pom.xml文件添加测试依赖。可以使用下面的代码片段将依赖添加到pom.xml文件: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ``` 这个依赖包含了一些常用的测试工具和框架,例如JUnit和Mockito。 2. 接下来,在Spring Boot项目创建测试类。可以在任何一个包下创建一个新的Java类,并使用`@SpringBootTest`注解标注该类。这个注解会告诉Spring Boot框架这是一个测试类,并且需要使用Spring上下文来运行测试。 3. 在测试类,可以使用`@Test`注解标注一个测试方法。在这个方法,可以编写用于测试的代码。例如,可以使用`@Resource`注解引入需要测试的Bean,并执行一些测试逻辑。 总结:创建Spring Boot项目的测试需要在pom.xml文件添加测试依赖,创建测试类并使用`@SpringBootTest`注解标注,然后在测试方法编写测试代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [如何在springboot项目添加测试](https://blog.csdn.net/qq_43783527/article/details/124553412)[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%"] - *3* [如何为一个springboot项目添加test模块](https://blog.csdn.net/tfak47/article/details/118213550)[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、付费专栏及课程。

余额充值