Spring结合junit进行单元测试
2016-10-26 22:19
351 查看
Spring结合junit进行单元测试
在进行单元的测试的时候比较头疼的就是,如果使用了spring,那么需要手动的进行对类进行初始化,比如最常见的service和service的实现类serviceimpl。现在就介绍一个不是很新的测试方法。采用junit进行单元测试。下面是一些要点:
1、采用的spring的jar包和spring-test的jar包是同样版本的。
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency>
2、在写Junit单元测试的时候需要加入注解告知spirng的配置文件位置。
package test; import com.xueyou.ssm.service.FirstService; import org.junit.Assert; 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 static org.mockito.Mockito.*; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by wuxueyou on 16/10/25. */ @RunWith(value = SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring-mvc/springmvc-servlet.xml", "file:src/main/webapp/WEB-INF/spring-mvc/datasource.xml"}) public class MockitohelloTest { public List<String> mockannotationList; @Test public void simpleTest(){ List<String> mockList = mock(List.class); mockList.add("one"); mockList.add("one"); mockList.add("one"); mockList.clear(); verify(mockList).clear(); verify(mockList, atLeast(3)).add("one"); } @Autowired FirstService firstService; @Test public void FirstModelTest(){ Map<String,Object> params = new HashMap<>(); Map<String,Object> resMap = firstService.getJson(params); for (String s : resMap.keySet()) { System.out.println(resMap.get(s)); } Assert.assertEquals(1, resMap.size()); } }
测试结果:
[{PASSWORD=1, LOGINID=a, ID=1083caa8-9143-11e6-945d-708e78b00b24, CREATETIME=2016-10-24 20:39:56.0, BIRTHDAY=2016-10-15 17:48:59.0, NAME=aa, AGE=12}] 1 成功 java.lang.AssertionError: Expected :1 Actual :3 <Click to see difference> at org.junit.Assert.fail(Assert.java:88) at org.junit.Assert.failNotEquals(Assert.java:834) at org.junit.Assert.assertEquals(Assert.java:645) at org.junit.Assert.assertEquals(Assert.java:631) at test.MockitohelloTest.FirstModelTest(MockitohelloTest.java:48) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:85) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:86) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:241) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:87) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) Process finished with exit code 255
最后,如果测试的是更新或者插入操作,那么可以在测试上增加一个回滚的注解。
@Rollback(true)
相关文章推荐
- Junit结合Spring对Dao层进行单元测试
- Junit结合Spring对Dao层进行单元测试
- spring结合junit进行单元测试(二)——测试后进行事务回滚
- Junit结合Spring对Dao层进行单元测试
- [转][Java]使用Spring配合Junit进行单元测试的总结
- 使用spring提供的测试功能结合JUnit4进行单元测试
- Spring整合JUnit框架进行单元测试代码使用详解
- 在Spring中结合Dbunit对Dao进行集成单元测试
- 使用Junit4对由Maven管理的Spring项目进行单元测试
- 使用spring配合Junit进行单元测试的总结
- 用Spring提供的JUnit框架扩展对DAO或Service层进行单元测试
- Ant和JUnit结合进行单元测试 ant 软件包 org.junit 不存在
- 用Spring提供的JUnit框架扩展对DAO或Service层进行单元测试
- Spring整合JUnit框架进行单元测试代码使用详解
- Spring整合JUnit进行单元测试
- Spring整合Junit进行单元测试
- Ant和JUnit结合进行单元测试
- 使用JUnit在struts+spring+hibernate框架环境下进行单元测试
- Spring整合JUnit框架进行单元测试代码使用详解
- maven下使用 junit对 spring进行单元测试