Eclipse/Maven:JUnit测试在运行时未编译

Tom*_*Tom 68 eclipse junit maven

我正在使用Maven和Eclipse(m2eclipse插件)开发一个项目.我遇到了JUnit测试的问题:

有时,在Eclipse中运行它们时,它们不会被编译,而是使用旧的类文件.当我删除类文件时,我进入ClassNotFoundExceptionsEclipse.然后我必须通过使用mvn test-compile或其他目标手动重新编译它们.

我还注意到测试的类文件有时会被放入classes子目录而不是test-classes.

我真的无法弄清楚出了什么问题.

JUnit java文件位于src/main/java并且名称正确(*Test.java).

我是否必须通过Maven编译并运行它们?当我想运行它时,为什么Eclipse不编译文件?(有趣的是,有时它确实如此.有时候一切都很完美.)

apa*_*a64 86

我遇到了与STS Eclipse(Spring开发变体),m2e和JUnit相同的问题.解决的办法是设置输出文件夹src/test/javatarget/test-classes:

  1. 右键单击src/test/javaPackage Explorer中的文件夹
  2. 选择构建路径 - > 配置输出文件夹
  3. 输入target/test-classes,单击" 确定"

现在,测试类中的更改已正确编译,您应该能够在Eclipse中运行JUnit测试.

问题是Eclipse将单元测试编译为默认输出文件夹,target/classes而JUnit插件正确地尝试从中运行它们test-classes.

这个问题有几个重复:

  • 要自动获得相同的结果,请右键单击项目,然后选择Maven-> Update Project Configuration ... (12认同)

Roo*_*osh 5

除了下面的答案

  1. 右键单击src/test/java文件夹
  2. 选择构建路径 - >配置输出文件夹
  3. 输入目标/测试类,单击"确定"

您应该检查以确保通过右键单击项目并转到" 属性" - >"构建器"来正确设置构建器.如果您发现缺少构建器,则需要安装一个构建器.就我而言,maven项目有一个AspectJ依赖项,当我使用Maven Eclipse插件构建我的Eclipse项目时,默认情况下它正在寻找一个AspectJ构建器.我安装了AspectJ开发工具,它解决了这个问题.

希望这可以帮助!

  • "**以下的答案"并不适用于基于投票级别的平台,"**答案"也不适用于动态多答案平台. (3认同)

Jam*_*ven 0

Eclipse 并不期望任何其他东西会破坏类文件。它假设如果您没有在 eclipse 中编辑该文件,则它没有更改并且不需要编译。我认为问题源于 eclipse 和 maven 共享输出目录。我经常看到这种情况,如果我的 mvn 构建失败,它会删除类文件作为干净文件的一部分,但不会编译新文件。我认为最好的解决方案是为 mvn 和 eclipse 建立单独的构建目录,但我从未研究过这一点。