项目集成junit时遇到的加载问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwrlj527/article/details/82893862

      最近接手一个项目,有时候想测试个接口都走界面,第一是麻烦,第二是没法看性能。所以我决定增加junit的单测环境,并写个基类,以后的测试类直接继承这个基类再写测试业务逻辑。

    遇到的问题首先是spring的类加载,配置文件里写了两份,但是呢有一份在项目里有没有找到,不知道什么鬼。我想保证单测环境尽量与开发一致,所以有设置bean的加载方式。

    首先来看看我的基类,基类整个代码,其他分享有写过,我就不重复写了。

    这里主要来说说我增加的新标签

@TransactionConfiguration(transactionManager="transactionManager",defaultRollback=true)这个过时的写法在spring3.2以上就被@Transactional(value="transactionManager")和@Rollback(value=true)取代了。

@ActiveProfiles({ "production" })是配合applicationContext.xml的配置文件的。为什么这样说,来看看我们项目里applicationContext的配置文件:

这里不加这个标签其实根本就不会加载相关配置文件,而且这里更气人的是这些加test的配置文件根本就不存在。所以我想保持一致就直接写了上面的bean加载模式。然后下面还有囧事,配置好这些后,直接运行这个测试基类,居然报错了。而且是个新错误,我没见过,首先排除基类代码问题,因为不是第一次用了,肯定不是这个问题,那么肯定问题还出在bean的加载上,先看报错截图:

百度了一下,在stackoverflow看到,英文的大致意识是bean的加载有脱离spring管理的导致这里报需要配置上下文什么默认servlet处理。然后说是@Configuration或@EnableWebMvc标签导致,我在项目全文搜索了下,发现确实是这么回事,还真有类上面加了这2个标签:

于是,我先注释。然后再跑基类,ok,直接正常了:

到此,我有可以开始放飞我的测试了,想测试什么测什么。

猜你喜欢

转载自blog.csdn.net/zwrlj527/article/details/82893862