一、junit4

1、添加Junit的起步依赖

<!--测试的起步依赖--> 
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

2、编写测试类

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = MySpringBootApplication.class) 
public class MapperTest { 
    @Autowired 
    private UserMapper userMapper; 
    @Test 
  public void test() { List<User> users = userMapper.queryUserList(); System.out.println(users); } }
其中,SpringRunner继承自SpringJUnit4ClassRunner,使用哪一个Spring提供的测试测试引擎都可以
public final class SpringRunner extends SpringJUnit4ClassRunner

@SpringBootTest的属性指定的是引导类的字节码对象

@Test注解

import org.junit.Test;

单元测试报错Failed to load ApplicationContext

报错代码

@RunWith(SpringRunner.class)
@SpringBootTest(classes = HainanAdminApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class Test1 {
    @Resource
    private ReceiveOrderDetailDao receiveOrderDetailDao;
    @Test
    public void test() {
        ..

    }
}

报错如下:

解决办法:

在SpringBootTest后加上:

webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT

意思是创建Web应用程序上下文(基于响应或基于servlet),原因:websocket是需要依赖tomcat等容器的启动。所以在测试过程中我们要真正的启动一个tomcat作为容器。

二、junit5

Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,在 Spring Boot 2.2.0 版本之前,spring-boot-starter-test 包含了 JUnit 4 的依赖,Spring Boot 2.2.0 版本之后替换成了 Junit Jupiter。

编写测试类

@ExtendWith(SpringExtension.class)
@SpringBootTest
public class ApplicationTests {
    @Test
    public void contextLoads() {
    }
}

注意:@Before@BeforeClass@After@AfterClass 被替换

  • @BeforeEach 替换 @Before
  • @BeforeAll 替换 @BeforeClass
  • @AfterEach 替换 @After
  • @AfterAll 替换 @AfterClass

 

 

 

posted on 2021-08-31 10:57  周文豪  阅读(242)  评论(0编辑  收藏  举报