先说结论
这里说的@Test 是
import org.junit.Test;
如果@Test使用的是
import org.junit.jupiter.api.Test; 就没有任何问题了 (以后测试还是用这样类方便写)
结论:
1.如果是以main中启动类开头为名称的类不需要写@RunWith
2.如果测试类是随便就需加入@RunWith("SpringRunner.class")
测试如下:
这是我项目的整体:
mybatis-plus搭建后,准备测试一下是否成功,然后就创建了一个SimpleTest的类,代码如下:
package com.winter.userevent;
import com.winter.userevent.mapper.UserMapper;
import com.winter.userevent.model.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@SpringBootTest
public class SampleTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
}
代码是上面的,然后我进行测试,报错如下:
说明问题: Spring就没有启动起来,主要原因是Spring测试类
一、测试类不是以main中启动类的名称开头的
如果测试类起名不是以main中启动类的名称开头的,Spring是扫描不到的,因此无法启动
这个时候就需要加入
@RunWith(SpringRunner.class) 这样一段代码,如下:
package com.winter.userevent;
import com.winter.userevent.mapper.UserMapper;
import com.winter.userevent.model.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@SpringBootTest
@RunWith(SpringRunner.class)
public class SampleTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
}
再次启动成功。如下
二、测试类不是以main中启动类的名称开头的
如下代码
测试结果:
成功