1. 程式人生 > 其它 >java.lang.Exception:No tests found matching的解決方案

java.lang.Exception:No tests found matching的解決方案

今天學習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的時候每次都飄綠,永遠不報紅~~~