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.assembler and also have to be annotated with some Spring stereotype annotation, like @Component or @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

最新文章

  1. jvm
  2. python简单的爬虫,网页图片
  3. 7 Types of Regression Techniques you should know!
  4. 二 mybatis 动态sql
  5. 面向过程部分 Java 和 C++ 的区别
  6. CSS的display属性
  7. XSS获取cookie
  8. Linux内核中影响tcp三次握手的一些协议配置
  9. 笔记本CPU的型号和类型的区分方法
  10. css中同时用头部引入和外部引入对同一个标签进行样式设置,哪一个优先级高。
  11. FileNameExtensionFilter文件过滤
  12. Dapper 多数据库优化
  13. Oracle误删除表数据后的恢复具体解释
  14. BZOJ 3620: 似乎在梦中见过的样子 [KMP 暴力]
  15. Android的Activity组件
  16. Spring注解与Java元注解小结
  17. ORA-03113: end-of-file on communication channel 磁盘慢,数据库启动失败
  18. leetcode题解 200. Number of Islands(其实就是一个深搜)
  19. Spring ResponseEntity
  20. Spark的机器学习算法mlib的例子运行

热门文章

  1. 将 子集和问题 运行时间从 200.8s 优化到 0.4s
  2. iOS移动支付——支付宝支付
  3. day10_python学习笔记_chapter13_面向对象编程
  4. MFC通过ODBC连接mysql(使用VS2012编写MFC)
  5. php 封装Mysql数据库操作类
  6. Android studio mac版本快捷键
  7. hdu 1695 GCD 容斥+欧拉函数
  8. 移动跨平台开发框架Ionic开发一个新闻阅读APP
  9. Activity篇章参考
  10. Linux中的cron计划任务配置方法(详细)