一、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