springboot中@Test注解碰到的问题 详细
当我们初始化springboot项目的时候,会自动给我们导入一下该测试的依赖,springboot项目所有测试类都依赖该依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
初始化给我们导入了import org.junit.jupiter.api.Test
类
springboot提供的测试类
package com.zz.es02;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Es02ApplicationTests {
@Test
void contextLoads() {
}
}
但@Test
还有一个类是import org.junit.Test
package com.zz.es02;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
/**
* @Author zz
* @Date 2021/10/1 19:47
*/
@SpringBootTest
public class test {
@Test
//该测试类必须加上public权限修饰符
public void test(){
System.out.println("Method test() should be public");
}
}
我们创建测试类的时候很容易导错包,那么springboot提供的这两个测试类,什么区别那?
org.junit.Test
该类定义的方法必须带有权限修饰符
用在2.2.x之前
org.junit.jupiter.api.Test
用在2.2.x之后
2.2.x之后规范使用org.junit.Test不会报异常
但2.2.x之前使用org.junit.jupiter.api.Test会报异常
还有时候会碰到@RunWith(SpringRunner.class)
注解的测试类,那么使用该测试类首先要导入以下junit的依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
测试类
package com.zz.es02;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
//SpringJUnit4ClassRunner是SpringRunner的父类
@RunWith(SpringRunner.class)
@SpringBootTest
class Es02ApplicationTests {
@Test
void contextLoads() {
System.out.println(111);
}
}
该测试类必须要导入org.junit.jupiter.api.Test类