日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IDEA 运行 Junit 测试用例报 !!! JUnit version 3.8 or later expected 错误

發布時間:2024/3/12 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IDEA 运行 Junit 测试用例报 !!! JUnit version 3.8 or later expected 错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題介紹

在使用 IDEA 運行 Junit 測試用例的時候,控制臺報了!!! JUnit version 3.8 or later expected錯誤,完整報錯信息如下:

!!! JUnit version 3.8 or later expected:java.lang.ClassNotFoundException: junit.framework.ComparisonFailureat java.net.URLClassLoader.findClass(URLClassLoader.java:382)at java.lang.ClassLoader.loadClass(ClassLoader.java:418)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)at java.lang.ClassLoader.loadClass(ClassLoader.java:351)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at com.intellij.rt.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:209)at com.intellij.rt.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:195)at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:49)

我的測試代碼

import org.junit.jupiter.api.Test;public class StronglyReferenceTest {@Testpublic void test() {System.out.println("hello");}}

問題排查

看到ClassNotFoundException第一反應就是包沖突,所以先排查項目的依賴,看是否有依賴沖突。查看了pom文件,項目關于junit的依賴只有:

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.7.1</version><scope>test</scope> </dependency>

顯然這并不會導致包沖突,而且當我使用mvn clean test命令去執行測試用例的時候,測試用例能正常執行

$ mvn clean test ...[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.736 s [INFO] Finished at: 2021-03-13T21:01:28+08:00 [INFO] Final Memory: 14M/68M [INFO] ------------------------------------------------------------------------

這就更加證明了項目代碼本身沒什么問題,該報錯有可能是 IDEA 的 bug,所以去 google 看有沒有人遇到相關的問題,查找了一番后,發現遇到該問題的人還不少

搜索到的網站基本都被我瀏覽了一遍,后面找到一個帖子,這位作者雖然跟我一樣的報錯,但他是在運行main方法的時候報的錯,并不是運行junit測試方法時報的,原文鏈接為:https://intellij-support.jetbrains.com/hc/en-us/community/posts/360003450980-JUnit-version-3-8-or-later-expected?page=2#comments

他產生該問題的原因是類名使用了Test結尾,而以Test結尾的類,IDEA 會將其識別為 junit 測試類去運行(這是IDEA的bug,不過我用的版本已經修復了)。解決方案就是類名去掉Test后綴

上面的解決方案給了我一點啟發,會不會我的錯誤也是類名問題呢?于是我也去掉Test后綴,即將StronglyReferenceTest改為StronglyReferenc后再次執行測試方法,發現問題解決了,測試方法執行正常

但我的類本來就是一個 junit 測試類啊,為什么以Test結尾也會報錯呢?而且我之前的其他項目,類名也是以Test結尾的,也能正常運行

后來發現原來是我之前在src/main/java下也創建了一個StronglyReferenceTest類

當src/main/java文件夾下有與src/test/java文件夾下相同名字的類時,執行該類的測試方法就會報錯,解決方案就是盡量避免相同名稱的類出現(實際上項目中一般不會出現這種問題)

結論

src 下的類,最好不要以Test結尾,這樣做并不規范,而且容易導致編輯器的誤解,以為該類是測試類,從而導致意想不到的錯誤

我也向 IDEA 上報了該問題,等待 IDEA 的回復,感興趣的同學可以點擊該鏈接圍觀:https://youtrack.jetbrains.com/issue/IDEA-264240

最后,如果該文章對你有幫助的話,可以在微信搜索huangxy關注我的公眾號,也可以掃下方二維碼進行關注

總結

以上是生活随笔為你收集整理的IDEA 运行 Junit 测试用例报 !!! JUnit version 3.8 or later expected 错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。