Spring Boot的一个测试用例
2016-07-23 18:55
465 查看
package tk.mybatis.springboot.mapper; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.transaction.annotation.Transactional; import tk.mybatis.springboot.Application; import tk.mybatis.springboot.model.City2; import java.util.ArrayList; import java.util.List; /** * @author liuzh * @since 2016-03-06 17:42 */ @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @Transactional @SpringApplicationConfiguration(Application.class) public class MyBatis331Test { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private MyBatis331Mapper mapper; @Test @Rollback public void testInsertList() { List<City2> city2List = new ArrayList<City2>(); city2List.add(new City2("石家庄", "河北")); city2List.add(new City2("邯郸", "河北")); city2List.add(new City2("秦皇岛", "河北")); Assert.assertEquals(3, mapper.insertCities(city2List)); for (City2 c2 : city2List) { logger.info(c2.toString()); Assert.assertNotNull(c2.getId()); } } @Test public void testSelectById(){ City2 city2 = mapper.selectByCityId(1); logger.info(city2.toString()); Assert.assertNotNull(city2); Assert.assertNotNull(city2.getCityName()); Assert.assertNotNull(city2.getCityState()); } @Test public void testSelectAll(){ List<City2> city2List = mapper.selectAll(); for(City2 c2 : city2List){ logger.info(c2.toString()); Assert.assertNotNull(c2); Assert.assertNotNull(c2.getCityName()); Assert.assertNotNull(c2.getCityState()); } } }
@Documented @Inherited @Retention(value=RUNTIME) @Target(value=TYPE) public @interface SpringApplicationConfiguration Class-level annotation that is used to determine how to load and configure an ApplicationContext for integration tests.
Similar to the standard ContextConfiguration but uses Spring Boot's SpringApplicationContextLoader. Author: Dave Syer See Also: SpringApplicationContextLoader http://docs.spring.io/spring-boot/docs/1.1.x/api/org/springframework/boot/test/SpringApplicationConfiguration.html
What you are trying to do can easily be done with the following code:
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = TestContextConfiguration.class) public class ReportResponseAssemblerTest { @Autowired ReportInstanceResponseAssembler reportResponseAssembler; @Test public void testPlaceHolder() { Assert.assertNotNull(reportResponseAssembler); } } @EnableAutoConfiguration @ComponentScan(basePackages = { "com.blahpackage.service.assembler" }) @Configuration public class TestContextConfiguration { }
The three classes you mention need to be under
com.blahpackage.service.assemblerand also have to be annotated with some Spring stereotype annotation, like
@Componentor
@Service. For example you would have:
@Component public class ReportResponseAssembler { @Autowired private ParameterResponseAssembler parameterResponseAssembler; @Autowired private TimeRangeResponseAssembler timeRangeResponseAssembler; public ReportResponseAssembler makeResponse() { return new ReportResponseAssembler(); } } @Component public class ParameterResponseAssembler { //whatever }
I would however advise that you use such a test rarely because of the performance implications. What I mean is that if you have a lot of these types of tests, Spring needs to create and destroy a different application context for each one, whereas if you use the same context and tests, Spring can (usually) cache the context. Check out this blog post for more details
http://stackoverflow.com/questions/26370743/how-to-use-springapplicationconfiguration-or-contextconfiguration-to-load-smalle
相关文章推荐
- JAVA面向对象-----instanceof 关键字
- JAVA面向对象-----instanceof 关键字
- Java中字符串拼接的一些细节分析
- 使用spring websocket 和stomp实现消息功能
- Java OCR 图像智能字符识别技术,可识别中文
- JAVA面向对象-----super关键字
- JAVA面向对象-----super关键字
- 猜数游戏(JAVA)
- Intellij Idea 下用maven创建SpringMVC项目问题汇总
- Java抽象类和抽象方法简单演示
- Springmvc+Mybatis+Velocity实现小demo(Maven项目)
- 观察者模式
- java-并发-同步容器
- Struts 关于validator的regex验证
- java 队列和二叉树代码
- 自学Java第一篇
- JAVA面向对象-----extends关键字
- JAVA面向对象-----extends关键字
- JAVA存储数据的5个地方
- 基于spring-boot的rest微服务框架