典型報錯
java.lang.ClassNotFoundException: com.example.MyTest
at java.net.URLClassLoader.findClass...
MyEclipse 中 Java EE 項目跑 JUnit 報找不到類,但新建普通 Java 項目卻正常。
三步排查法
1. 強制全量重新編譯(最常見、最有效)
- 菜單:Project → Clean... → 勾選項目 → Clean
- 或右鍵項目 → Maven → Update Project → Force Update
- 原因:增量編譯遺漏、輸出目錄不同步、緩存類文件損壞。
2. 檢查 JUnit 依賴範圍
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope> <!-- 必須是 test,不要 compile -->
</dependency>
- 若手動加 Jar,確保在 **Java Build Path → Libraries → JUnit** 且 **Order and Export** 勾選。
- Java EE 項目若用 Maven,`mvn test-compile` 驗證測試代碼能否編譯。
3. 校驗運行配置
- Run Configurations → JUnit → **Test 選單** → 選 **Run a single test** 或 **Run all tests in the selected project/package/folder**。
- **Classpath** 頁籤確認 `target/test-classes`、`target/classes` 及依賴 Jar 均在列表中。
- Working Directory 指向項目根目錄。
進階:模塊化項目 (Java 9+) 注意事項
- `module-info.java` 中需 `requires junit;` 或 `--add-modules=ALL-MODULE-PATH`。
- 測試類所在包需 `opens com.example to junit.platform.runner;`(反射訪問)。
一鍵修復腳本 (Maven 項目)
mvn clean test-compile surefire:test
徹底清理、編譯主/測試代碼、運行 Surefire 插件,繞過 IDE 緩存問題。
總結
90% 的 `ClassNotFound` 來自 **編譯輸出不同步**。養成「改代碼 → Clean → Build → Run」肌肉記憶,配合 Maven 標準目錄結構,JUnit 運行將零驚喜。