最好的测试
1> 用selenium做UI端的测试,
2> 用spring注解的方式对Service层测试下, 记得删除测试数据
3> 如有必要,对一些复杂业务逻辑单独写测试代码。
---------------
单元测试
重点是可重复性,不可重复的单元测试是没有价值的
Unitils 测试DAO层时为了不影响db的数据现场
需要自己的sql,自己的excel数据集,在hsql做测试。
的确是挺合理的,只是成本有点大。
单独测试service层 和controller层是没有意义的,如果用easymock来模拟dao层,这个对测试
整个业务逻辑而言是没有意义的。
selenium的确是一个比较靠谱的选择,属于黑盒测试,插入测试数据后只要记得删掉就ok
但是有一个缺点,页面元素的变化可能会导致测试脚本出错,这个也是没办法的,
loadrunner也是有这个问题。
package com.tristan.web.test;
import static org.junit.Assert.*;
import java.util.List;
import javax.validation.constraints.AssertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.tristan.web.po.User;
import com.tristan.web.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/config/spring-core.xml"})
public class TestUserService {
@Autowired
private UserService userService;
@Test
public void testInstance(){
assertNotNull(userService);
}
@Test
public void testSearch(){
List<User> userList = userService.search(new User());
assertTrue(userList.size()>0);
}
@Test
public void testCRUD(){
User u = new User();
u.setUserName("tristan");
u.setAge(11);
u.setGender("m");
u.setHeight(111);
u.setWeight(111);
u.setCity("shanghai");
u.setSpeciality("IT");
u.setInterest("guitar");
userService.update(u);
List<User> userList = userService.search(u);
assertTrue(userList.size()>0);
userService.delete(userList.get(0).getId());
User u2 = userService.find(userList.get(0).getId());
assertNull(u2);
}
}