在service类通过idea(shift+ctrl+t)快速创建测试类
自动生成的代码如下:
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void create() {
}
@Test
public void deleteByName() {
}
@Test
public void deleteAll() {
}
@Test
public void getAllUser() {
}
}
添加得单元测试代码如下:
public class UserServiceImplTest {
@Autowired
private UserService userService;
@Test
public void create() {
/**
* 添加用户测试
*/
userService.create("1", "2");
}
}
直接运行该单元,报如下错误:
原因分析:
测试类没有扫描到service层,导致userService注入失败,调用userService对应的方法的时候自然会报NullPointerException
在测试类上面加上@SpringBootTest()和@RunWith(SpringRunner.class)注解即可
如下:
@SpringBootTest()
@RunWith(SpringRunner.class)
public class UserServiceImplTest {
@Autowired
private UserService userService;
@Test
public void create() {
/**
*
*/
userService.create("1", "2");
}
}
拓展:junit提供了如下的如下的注解以及一些断言的核心方法
一个测试类,单元测试方法的不同注解,对应的执行顺序是不一样的,前后的执行顺序为
@BeforeClass->@Before->@Test->@After->@AfterClass
每一个测试单元的前后执行顺序为:
@Before->@Test->@After
@BeforeClass修饰的方法会在所有方法被调用前被执行,
而且该方法是静态的,所以当测试类被加载后接着就会运行它,
而且在内存中它只会存在一份实例,它比较适合加载配置文件。
@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接
@Before和@After会在每个测试方法的前后各执行一次。