首先单元测试的包应该和src同级目录,这样在项目完成之后就可以直接删除,不影响项目任何地方。
导入JUnit4的jar包。
新建一个工具类
import org.junit.AfterClass; import org.junit.BeforeClass; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 单元测试工具类 * @author XX * */ public class UnitTestBase { protected static ClassPathXmlApplicationContext context = null; /*对于单一配置文件的项目利用这个做单元测试,直接把路径写死了*/ @BeforeClass public static void setUpBeforeClass() throws Exception{ //获取spring配置文件,生成上下文 context = new ClassPathXmlApplicationContext("classpath*:beans.xml"); context.start(); } @AfterClass public static void setUpAfterClass()throws Exception{ context.destroy(); } /*下面的方法是用来适配有很多XML配置文件的项目,继承之后传入路径即可生成对应的context*/ /*private ClassPathXmlApplicationContext context; private String springXmlpath; public UnitTestBase() {} public UnitTestBase(String springXmlpath){ this.springXmlpath = springXmlpath; } @Before public void berfore() { if(StringUtils.isEmpty(springXmlpath)) { springXmlpath = "classpath*:spring-*.xml"; } try { context = new ClassPathXmlApplicationContext(springXmlpath.split("[,\\s]+")); context.start(); } catch (Exception e) { e.printStackTrace(); } } @After public void after() { context.destroy(); } @SuppressWarnings("unchecked") protected <T extends Object> T getBean(String beanId) { return (T)context.getBean(beanId); } protected <T extends Object> T getBean(Class<T> clazz) { return context.getBean(clazz); } */ }
然后选择对于你要新建单元测试的类按照下面的图操作
这里只是演示一下,一般不直接对实现类做测试,直接对接口来测试,一般测试的是服务层的接口和持久层的接口
下面是测试的代码
import org.junit.Test; import com.xxx.newSystem.utils.UnitTestBase;//导入之前的工具类 public class IUserServiceTest extends UnitTestBase { IUserService userService = (IUserService) context.getBean("userService"); @Test public void testLogin() { System.err.println(userService.login("xex", "123456")); } }
//这是利用工具类中注释掉的方法,用于有多个xml配置文件的时候做测试 public class TestOneInterface extends UnitTestBase{ public TestOneInterface(){ super("classpath*:beans.xml"); } @Test public void test() { IUserService userService = super.getBean("userService"); System.err.println(userService.login("xx", "123456")); } }
对于Junit4使用,网上的方法也有很多,注解的配置也有很多,我只是找我需要的。还是各取所需比较好,之后的项目我都会写单元测试的,做到真正的敏捷开发。
来源:http://www.cnblogs.com/linkstar/p/5327363.html