今日工作:今日完成产品管理的基本接口,并进行测试。
为什么需要测试?
在正式进入这个行业也之前也写过测试Junit,当时主要是想一次跑多个方法,但是有的时候又不是很想使用。
后来渐渐开始写了很多测试用例,主要是针对以下两种原因:
- 项目代码量庞大,每次迭代的任务不是很多。
- 为了保障改了之后的代码能够正常运行,至少不报明显错误。
- 针对Service和dao进行可行性测试,保证和预期的结果差不多。
针对以上的问题所以就慢慢的开始写了测试,当然只是写一些简单的测试用例。
Spring Boot的测试支持的非常好,只需要添加一个起步依赖即可,spring-boot-starter-test,,配合Junit
问题及解决:进行测试的时候,程序一直报这个错误,提示找不到资源文件。
java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.redis.host' in value "${spring.redis.host}"
看到这里肯定是回想资源文件问题被,启动测试的时候,没有加载文件,那么问题来了,Spring Boot测试的时候,
Spring上下文,如何加载的呢?
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class TestProductService {
private Logger log = Logger.getLogger(this.getClass());
@Autowired
private IProductService productSrevice;
@Test
public void testGetProduct(){
ProductDto pe = productSrevice.getProductById("1");
log.info("productDto:"+pe);
}
}
在Spring Boot1.4以后,测试的注解发生了变化,没有以前那么多的注解文件了,大家可以对照看看。
问题的关键是:
@SpringBootTest(classes = Application.class)
这个注解,在运行测试的时候需要找到Application,加载上下文。
有的博客说不需要加,我猜想可能是他把这个测试放在了和Application启动入口一个位置吧!
明日计划:开始写界面话