1.Spring对Controller、Service、Dao进行Junit单元测试总结
(1) 所有用Junit进行单元测试,都需要下面的配置
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
(1)applicationContext.xml 是整个项目的Spring的配置文件。包括数据源配置、MVC配置和各种Bean的注册扫描
(2)如果有多个文件,就用逗号隔开写多个,像这样
@ContextConfiguration(locations = { "classpath:applicationContext.xml","classpath:servlet-context.xml"})
2.Dao层的单元测试
(1) 将*DAO接口注入进来,直接调用即可
(2)加上@Transactional 事物管理注解以后,单元测试执行完后会撤销对数据库的修改
(3)代码示例
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“classpath:applicationContext.xml”})
@Transactional
public class DaoTests {
@Resource
private UserDAO userDAO;
@Test
public void testSelect() {//查询
User userInfo = userDAO.selectByPrimaryKey(1L);
//断言
Assert.assertEquals(userId, userDAO.getUser( userId ).getUserId());
Assert.assertEquals(nickname, userDAO.getUser( userId ).getNickname());
System.out.println(userInfo);
}
@Test
public void insert(){//添加
User user = new User();
user.setAge(“9”);
user.setName(“王五”);
user.setSex(“M”);
user.setCreateTime(new Date());
userDAO.insert(user);
@Test
public void testUpdate() {//更新
User user = new User();
user.setId(5L);
user.setAge("999");
user.setName("王五");
user.setSex("M");
user.setCreateTime(new Date());
userDAO.updateByPrimaryKey(user);
}
@Test
public void testDelete() {//删除
userMapper.deleteByPrimaryKey(7L);
}
2.Service层单元测试
(1)与Dao层基本一致,把Service注入进来调用就行
(2)代码示例
```java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“classpath:applicationContext.xml”})
public class Servicetest {
@Resource
private UserService userService;
@Test
public void selectUserTest() {
User u = userService.selectUser(1);
System.out.println(u);
}
3.Controller层单元测试
(1)MockMvc是SpringMVC提供的Controller测试类
(2)每次进行单元测试时,都是预先执行@Before中的setup方法,初始healthArticleController单元测试环境
(3)代码示例
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class ControllerTest {
@Resource
private UserController userController;
// 模拟request,response
private MockHttpServletRequest request;
private MockHttpServletResponse response;
// 执行测试方法之前初始化模拟request,response
@Before
public void setUp(){
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse();
}
/**
* @Description: 测试用户登录
*/
@Test
public void testLogin() {
try {
request.setParameter("userName", "admin");
request.setParameter("password", "2");
Assert.assertEquals("login",loginController.loginTest(request,response)) ;
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.postman 自测
(1)一般是用于自测 restful 类型的接口
(2)用于自测前后端对接调用的接口等
5.SpringBoot单元测试
(1)使用SpringBoot快速搭建好项目后,进行快速测试
(2)导入测试依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
(3)在测试类使用两个注解
<1>@RunWith(SpringRunner.class)
<2>@SpringBootTest