离我遇到无法使用junit测试mvc项目的这个坑,已经过去2个月了。最近一段时间一直在忙版本的事情。基本无法抽身。jacoco的坑填完了,赶紧来填了这个坑。免得坑越来越多。
之前提过。由于项目的特殊性。开发将多个组件(子系统间)的通信方式,用listener来实现了。即只要master在,下游子系统的设置就可以通过监听来实现。
public class ApplicationListener implements javax.servlet.ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
// 设置环境变量,spring配置里面启动用到的
String rootClsPath = sce.getServletContext().getRealPath("/WEB-INF/classes");
System.setProperty(VisualConstants.ROOT_CLASS_PATH,rootClsPath);
// 设置默认监听
System.setProperty(VisualConstants.DB_SCHEMA, VisualConstants.SCHEMA_DEFAULT);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
}
前文提过,因为这个蛋疼的设定,我直接用spring-test,无法启动这listener,导致spring起不来。
这几天,我认真翻了一下junit的资料跟spring-test的资料。发现问题可解。
spring-test framework的核心,就在于testcontextmanager。同时,提供testexecutionlistener来方便的
运行spring的一些相关bean的加载。
在查看了一些资料之后,我改写了一下我的单测程序