项目结构搭建
参考前面的搭建Spring Boot项目。
http://www.jianshu.com/p/c5a380747e01
具体目录如下:
编写测试代码
一般测试文件会放在和src/main 同级的test文件夹下,具体项目路径和src/main /java路径一样,只是类文件名称后面一般习惯性加上Tests。
//简单验证结果集是否正确
Assert.assertEquals(3, userMapper.getAll().size());
//验证结果集,提示
Assert.assertTrue("错误,正确的返回值为200", status == 200);
Assert.assertFalse("错误,正确的返回值为200", status != 200);
具体代码如下,需要注意的有三个地方。
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTests {
@Autowired
private UserMapper userMapper;
@Test
public void testFind() {
System.out.println("测试开始");
//简单验证结果集是否正确
Assert.assertEquals(2, userMapper.getAll().size());
}
}
- @RunWith(SpringRunner.class)注解,指定当前运行环境
- @SpringBootTest注解,指定当前类是一个测试类
- @Test注解,指定当前方法是一个单元测试方法
开始测试
这里我们直接注入Mapper(Dao)层代码,然后在Test方法中进行测试。
System.out.println("测试开始");
//简单验证结果集是否正确
Assert.assertEquals(2, userMapper.getAll().size());
这里使用junit的Assert断言方法,直接断言当前Mapper的getAll()方法能获取到两条数据(假设数据库中确实只有两条数据)。右键Run,此时可以看见只是简单输出了测试开始,而断言则并没有输出任何东西,这个就是unix的哲学思想,没有消息就是最好的消息,意思是测试已经通过。
那么假如我们断言数据库由三条数据时,会发生什么呢?
修改代码,断言为3.
Assert.assertEquals(3, userMapper.getAll().size());
可以看到,报错了,测试不通过,结果是2,但是断言为3,这样我们就完成了一个Mapper层的简单测试。
下面我们进行增删改的测试。
- 增加的测试
@Test
@Rollback
public void testInsert(){
System.out.println("测试新增");
User user=new User();
user.setUserName("测试新增1");
user.setPassWord("123456");
Assert.assertEquals(1, userMapper.insert(user));
}
- 更新的测试
@Test
@Rollback
public void testUpdate(){
System.out.println("测试更新");
User user=new User();
user.setId(1);
user.setUserName("测试编辑1");
user.setPassWord("123456");
Assert.assertEquals(1, userMapper.update(user));
}
- 删除的测试
@Test
@Rollback
public void testDel(){
System.out.println("测试删除");
Assert.assertEquals(1, userMapper.delete(1));
}