Spring4.3.0 Junit4.11 initializationError(org.junit.runner.manipulation.Filter)

本文主要是介绍Spring4.3.0 Junit4.11 initializationError(org.junit.runner.manipulation.Filter),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring4.3.0 Junit4.11 initializationError(org.junit.runner.manipulation.Filter)

昨天手欠,在项目中把Spring3.2.14版本升级到4.3.0版本,结果在使用junit进行单元测试时抛出如下错误,耗了一个多小时才搞定,在此记录一下,以防遗忘。

具体解决方案:升级Junit4.11版本到4.12版本解决,初步怀疑是底层实现方式不兼容导致,但还没深究代码实现,不作100%保证

package com.mhy.aop;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.aop.aspectj.annotation.AspectJProxyFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.mhy.aop.aspectj.PreGreetingAspect;
import com.mhy.aop.aspectj.service.WaiterService;
import com.mhy.aop.aspectj.service.impl.WaiterServiceImpl;/*** 增强类测试* @author mahaiyuan* @date 2016年7月2日 下午11:52:36*/
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(locations = "classpath:aspectj-beans.xml")
public class AspectJTest {@Autowiredprivate WaiterService waiterService;@Testpublic void test02(){waiterService.greetTo("王五");System.out.println("============================");waiterService.serveTo("赵六");}
}

执行测试用例时,在eclipse里显示执行失败
单元测试失败
竟然没有错误提示?!拷贝了一下该异常信息,具体内容如下:

AspectJTest.test02
initializationError(org.junit.runner.manipulation.Filter)
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=test02], {ExactMatcher:fDisplayName=test02(com.mhy.aop.AspectJTest)], {LeadingIdentifierMatcher:fClassName=com.mhy.aop.AspectJTest,fLeadingIdentifier=test02]] from org.junit.internal.requests.ClassRequest@579bb367at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:35)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

大致的意思是没有找到匹配的测试方法,但明明有,为什么会说没有匹配上呢?
从google和stackoverflow查找了一翻,大部分都在写换IDE、重写RunWith下的类等等,不一而足,但最终没能解决这个问题,个人也感觉不靠谱,没办法只能回到实际情况本身来反向推论了。

产生原因:升级Spring的版本之后单元测试不能使用了
那如果把版本降为3.2.14是否还能正常,测试了一下,把版本降为3.2.14之后测试用例能正常执行了,那是否为Spring4与Junut4.11版本的兼容性问题呢?比如底层实现方式发生了变化,然后把项目中使用的Junit版本升级到4.12。

升级之后再次执行该测试用例,然后内牛满面了,结果运行正常

How are you
WaiterServiceImpl.greetTo name=王五
============================
WaiterServiceImpl.serveTo name=赵六

根据当前的情况来讲,问题产生在Spring与Junit不同版本之间的兼容性方面,具体是哪一步实现不兼容导致在未看底层实现方面不能保证具体原因,待后面查看源码时再补充上该内容。^_^

这篇关于Spring4.3.0 Junit4.11 initializationError(org.junit.runner.manipulation.Filter)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986033

相关文章

org.hibernate.hql.ast.QuerySyntaxException:is not mapped 异常总结

org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [select u from User u where u.userName=:userName and u.password=:password] 上面的异常的抛出主要有几个方面:1、最容易想到的,就是你的from是实体类而不是表名,这个应该大家都知道,注意

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

Hbase Filter+Scan 查询效率优化

Hbase Filter+Scan 查询效率问题 众所周知,Hbase利用filter过滤器查询时候会进行全表扫描,查询效率低下,如果没有二级索引,在项目中很多情况需要利用filter,下面针对这种情况尝试了几种优化的方案,仅供参考,欢迎交流。 根据业务要求,作者需要根据时间范围搜索所需要的数据,所以作者设计的rowKey是以时间戳为起始字符串的。 正确尝试: 1.scan 设置 开始行和结

Hibernate插入数据时,报错:org.springframework.dao.DataIntegrityViolationException: could not insert: [cn.itc

在用junit测试:插入数据时,报一下错误: 错误原因: package junit;import org.junit.Test;import cn.itcast.crm.container.ServiceProvinder;import cn.itcast.crm.dao.ISysUserDao;import cn.itcast.crm.domain.SysRole;

Java构造和解析Json数据的两种方法(json-lib构造和解析Json数据, org.json构造和解析Json数据)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。 一、介绍       JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json

Filter基本原理和使用

https://www.cnblogs.com/xdp-gacl/p/3948353.html 一、Filter简介   Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控

javaweb-day01-2(Junit测试工具用法)

JUnit 注释是给人看的,注解是给程序和编译器看的。 写好一个没有main函数的实体Person类,并且不想在main函数中来测试这个类中的方法: 我们一般使用JUnit测试: 建一个Junit.test包在这个包下建一个Junit test case,命名为PersonTest.java在Junit的测试用例PersonTest.java类中,建 testRun()、t

POM文件第一行报错org.apache.maven.archiver.MavenArchiver.getManifest

前几天新建maven项目时,系统自动生成的POM文件第一行总是报错 org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration) 百思不得其解,明明是自动生成的怎么还会有

org.hibernate.transaction.JDBCTransaction cannot be cast to javax.transaction.Transaction

org.hibernate.transaction.JDBCTransaction cannot be cast to javax.transaction.Transaction 这部分的具体地方为Transaction tr =(Transaction) session.beginTransaction();  错误原因:包倒错了,应该导入的包是hibernate的Transaction包

在UE的内容浏览器中添加自定义的Filter

目标需求 在UE的内容浏览器中,可以使用Filter来过滤资源: 目标需求是在这之中添加一个自定义的Filter。 其代码上是非常简单的,在本文末尾。 然而我觉得找到方法的过程也是挺有意思的,因此我也记录了下来。 探索过程 1. 在哪定义? 首先,我猜测Other Filters下的各个项目,也都是通过代码添加的。因此,我调了其中一项,比如Show Redirectors,然后对代码进