You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

跨包运行JUnit测试时遭遇ClassNotFoundException问题求助

解决JUnit测试中ClassNotFoundException: tests.BoardTests的方案

这种类找不到的问题在JUnit测试场景里太常见了,我给你整理几个优先级最高的排查步骤,一步步来:

  • 确认测试类的包结构与类名完全匹配
    Java是大小写敏感的,你得确保测试类确实放在tests包下,类名是精确的BoardTests(比如别写成boardTests或者BoardTest少个s)。另外在Eclipse里,存放测试类的文件夹必须被标记为「Test Source Folder」——右键文件夹 → Build Path → Use as Test Source Folder,不然编译阶段不会把这个文件夹里的类打包到测试类路径中。

  • 检查编译后的类文件是否存在
    去你的项目编译输出目录(一般是bin/test或者target/test-classes)里找tests/BoardTests.class文件。如果找不到,说明测试类根本没编译成功,先去Eclipse的「Problems」视图看看有没有语法错误、缺失依赖这类编译问题,这些都会导致类文件生成失败。

  • 验证JUnit运行配置的正确性
    右键测试类选择「Run As → JUnit Test」时,确认运行配置里的测试类路径是对的。或者直接去「Run Configurations」里找到对应的JUnit配置:

    1. 切换到「Test」标签,检查「Test class」是否填的是tests.BoardTests,有没有拼写错误;
    2. 切换到「Classpath」标签,确保测试编译输出目录(比如bin/test)已经被添加到类路径中。
  • 清理并重建项目
    Eclipse的编译缓存偶尔会抽风,试试「Project → Clean」,选中你的项目清理后再重新Build。这一步能解决很多莫名其妙的类加载问题。

  • 如果用了构建工具,检查JUnit依赖配置
    要是你的项目用Maven/Gradle,得确保JUnit依赖是test scope的,比如Maven的配置应该是:

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
    

    依赖缺失或者scope不对,也会影响测试类的加载。

附上你提到的错误信息:

java.lang.ClassNotFoundException: tests.BoardTests at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.eclipse.jdt.internal.junit.runner.Remot...

内容的提问来源于stack exchange,提问作者Nabeel Khalid

火山引擎 最新活动