今天学习MBatis时使用Junit测试出现了这个错误:
1 java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=add], {ExactMatcher:fDisplayName=add(com.test.UserTest)], {LeadingIdentifierMatcher:fClassName=com.test.UserTest,fLeadingIdentifier=add]] from org.junit.internal.requests.ClassRequest@42110406 2 at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40) 3 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:83) 4 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:74) 5 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:49) 6 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:525) 7 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) 8 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) 9 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
查了一下,发现大家遇到这个问题的原因有这几种:
1、测试方法前面没有添加@Test注解(这也是最常见的错误了)
解决方案:加上注解,非常简单。
2、测试方法使用了静态修饰
( 这里举的例子因为无法通过编译的,所以旁边直接提示有错。)
解决方案:删掉static,使用非静态方法进行测试。
3、测试方法不是public
测试方法必须是public,很容易忽略的小细节。
解决方案:改为public修饰。
4、版本不兼容
这个问题我没遇到,可以看一下这位朋友的解释:https://blog.csdn.net/sinat_32873711/article/details/53780453
5、缺少jar包(如此坑爹的原因。。。)
这个就是我遇到的问题了,我逐一排除了各种可能的原因以后运行程序还是报错,气得我都想砸电脑了...
后来我仔细看了一些项目,嗯?这是什么?
项目上有个红色感叹号,检查了一下好像没有啥问题,于是查了一下说有可能是缺少jar包。
得,看看是不是这么回事吧。
在有红色感叹号的项目上右键,选择build path,再选择Configure Build Path,我去还真是少了jar包
咋回事呢,我突然想起来我之前搞日志下jar包的时候,一开始下的1.7.25的版本,后来发现1.7.30的slf4j用的人比较多,那赶紧换了,我粘贴到lib文件夹里的时候,顺手就把1.7.25的jar包删了,结果搞出这样一个乌龙。
ok,remove这个jar包,项目恢复正常了。再来试试测试能不能行。
真是一包眼泪没处搁!令人激动的绿色!!我这辈子没这么爱过绿色!!
OK,问题解决!
通过这个也可以发现,在排除了语法、格式方面的原因后假如问题还是不能解决,那么就得考虑考虑是不是那些杂七杂八的地方出现了问题,比如jar包丢失啊,版本不兼容啊之类的。
希望大家用Junit的时候每次都飘绿,永远不报红~~~