6

我正在尝试JUnit从 Eclipse 运行测试,但是在运行这些测试时,我得到了ClassNotFound异常

完整的堆栈跟踪如下:

java.lang.NoClassDefFoundError: of Caused by: java.lang.ClassNotFoundException: of at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net。 URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass (ClassLoader.java:248) 线程“main”中的异常

我在谷歌上搜索过这个问题,发现有几个人遇到了这个问题,但他们似乎都没有解决我的问题。这可能是由于平台的差异

我的开发平台如下

OS: Windows XP
Eclipse JUNO
JUnit4
Maven2

同时,如果我使用 maven 运行这个项目,它运行得非常好。

对我来说最奇怪的部分ClassNotFound是抛出异常的类的名称。类的名称是of

这让我彻底震惊。

此外,我上面列出的堆栈跟踪就是我得到错误时得到的所有内容。

我已经在这个问题上停留了 2 天,任何帮助将不胜感激。

4

9 回答 9

12

我尝试了这里和其他帖子中提到的所有内容。人们提供的一些解决方案是:

  1. 更改测试的输出文件夹
  2. 为将从 Maven 运行 test-compile 的项目创建自定义构建器
  3. 在项目构建路径的 Order and Export 列表中将 Maven 依赖项移到更高的位置

还有很多很多,但我发现可以工作的一个如下:关闭开发环境。从我的本地 Maven 存储库中删除项目使用的 jar。打开 IDE。构建项目。运行测试。

经过数小时的敲击我的键盘并遵循建议的解决方案后,这个成功了!如果这不起作用,您可以尝试搜索我上面列出的解决方案。

于 2013-05-17T14:54:18.897 回答
7

在 Eclipse 中右键单击项目名称并选择“Maven --> update project”通常可以解决此问题。

于 2014-07-09T14:57:31.083 回答
1

我知道这个问题已经得到解答,但我仍然会在这里分享我的解决方案,

  1. 确保 'src/test/java' 的输出文件夹已设置为 'target/test-classes',这在许多其他帖子中已经说过,所以我在这里不再重复。

  2. 如果还是不行,很有可能是你的单元测试类的编译过程中出现了错误。转到“窗口”-> 打开“错误日志”视图,您应该能够看到错误消息的详细信息。

就我而言,由于网络问题,以前下载的依赖 jar 不知何故损坏了,所以只需从本地存储库中删除 jar 并使用 'maven' -> 'update configuration' 再次下载它。

然后一切正常!

于 2014-01-23T05:47:32.157 回答
1

通常,当我们构建时,我们在“运行配置选项卡”中选中“跳过测试”,而不是取消选中“跳过测试”并构建项目,junit 应该可以正常工作。这个解决方案对我有用。运行配置选项卡以构建项目

于 2016-07-28T07:30:29.477 回答
0

尝试在 Eclipse 中将透视图切换到 JUnit 并再次运行测试

于 2013-05-14T08:13:54.173 回答
0

尽管我看到了所有答案和其他帖子。我将总结我的努力:

可能是该项目的配置不适合同一工作区中的其他项目。(如何解决这可能是另一个问题)

所以,关闭这个工作区,单独为这个项目启动一个干净的工作区。

于 2015-06-08T04:26:23.293 回答
0

您还可以查看 POM.xml 中的信息

我遇到过同样的问题。设置代码时我的项目名称不匹配。

<groupId>CucumberTest</groupId>
<artifactId>com.ProjectName</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>com.ProjectName</name>
<url>http://maven.apache.org</url>

在 POM.xml 中更改项目名称后,它工作正常。

于 2019-11-27T13:43:29.703 回答
0

面临同样的问题。这个简单的步骤为我解决了这个问题。

  1. 从项目的构建路径中删除 JUnit 并再次添加。

  2. 如果设置为Build Automatically,您的工作区将再次构建。如果未设置为自动构建,则构建您的项目。你的问题应该得到解决。

于 2015-09-29T11:33:49.173 回答
0

您应该添加您使用的类,例如(spring-boot):

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {DataPoint.class})
public class DataPointTest {

    @Test
    public void TestBuilder() {
        DataPoint.Builder builder = new DataPoint.Builder();

        DataPoint dataPoint = builder.withCount(4).withFirst(1).build();

        assert dataPoint.getCount() == 4 && dataPoint.getFirst() == 1;
    }

}
于 2016-10-15T00:36:46.373 回答