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类