单元测试

最好的测试
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);
		
	}
	
	
}

你可能感兴趣的:(单元测试)