我正在使用Maven和Eclipse(m2eclipse插件)的项目。 我有与JUnit测试问题:
有时,在Eclipse中运行它们时,他们不会被编译,但旧的类文件代替。 当我删除的类文件,我得到ClassNotFoundExceptions
在Eclipse。 然后,我必须使用手动重新编译他们mvn test-compile
或其他目标。
我还注意到,有时被放入测试的类文件classes
子目录,而不是test-classes
。
我真的无法弄清楚什么是错的。
JUnit的Java文件都内src/main/java
和正确命名( *Test.java
)。
我必须编译并通过Maven的始终运行呢? 为什么不Eclipse的编译文件,当我想运行它们? (有趣的是, 有时它。有时,一切完美的作品。)
Answer 1:
我有同样的问题与STS的Eclipse(Spring开发的变体),M2E和JUnit。 解决的办法是设置输出文件夹src/test/java
到target/test-classes
:
- 右键单击
src/test/java
在Package Explorer文件夹 - 选择构建路径 - > 配置输出文件夹
- 输入
target/test-classes
,点击OK
现在,在测试类的更改正确编译,你应该能够在Eclipse中运行JUnit测试。
的问题是,Eclipse的编译单元测试,以默认的输出文件夹target/classes
而JUnit的插件正确地尝试从运行它们test-classes
。
有几个重复这个问题:
- ClassNotFoundException的Eclipse内运行JUnit单元测试时(使用Maven)
- Eclipse不看我的新JUnit测试
- JUnit的不使用最新的文件
Answer 2:
除了下面的答案
- 右键单击src /测试/ java文件夹
- 选择构建路径 - >配置输出文件夹
- 输入目标/测试类,点击OK
你应该检查,以确保您的制造商是设置正确,通过右键单击您的项目并转到属性- >生成器 。 如果你看到你的建设者丢失,你需要安装一个。 在我的情况下,Maven项目有一个AspectJ的依赖,当我使用Maven的Eclipse插件来构建我的Eclipse项目,它一直在寻找默认AspectJ的建设者。 我安装了AspectJ的开发工具,它解决了这个问题。
希望这可以帮助!
Answer 3:
另一点:JUnit测试类,应该在的src / test / java下,没有的src / main / java的,否则它们不会被正确的Maven检测为测试类,他们将被包含在打包的罐子,而不是在试验瓶。
Answer 4:
你所面临的问题,最有可能的解释是,输出文件夹src/test/java
配置不正确。
相反的手动修复此配置 ,你可以有m2eclipse的修复这个给你:该项目只需右键单击并选择的Maven>更新项目 。
Answer 5:
我面临着同样的问题。 上述配置的输出文件夹和Maven的>更新项目,但既不工作的建议尝试。 最后,改变了我的testOutputDirectory“建/班”,以及现在的单元测试得到回升和执行。
终于找到了问题的原因。 在我的POM,我们也按如下配置的Maven编译器插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<outputDirectory>build/classes</outputDirectory>
</configuration>
</plugin>
不需要输出目录的配置和高于问题的原因。 除去此标记后,junits越来越编译构建> testclasses文件夹,并在Maven构建以及正在运行。 yippee的:)
Answer 6:
请检查它可以在你的pom.xml配置“testSourceDirectory”路径。 然后,添加文件夹(在“testSourceDirectory”路径配置)到Eclipse构建路径。
请找到下面的pom.xml样本“testSourceDirectory”:
<build>
<testSourceDirectory>src/test/java</testSourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Answer 7:
确保没有任何感叹号项目的图标! 就我而言,我忽略了,有一个惊叹号,如: 项目图标感叹号
打开“标记”的观点,然后根据提示解决问题。 什么是“标记”的视角展示
JUnit测试类可以成功后,我称之为“MVN干净的测试”,因为它们不是指其在“标记” perspective.Therefor警告不可读的罐子,它很容易忽略它被执行..
Answer 8:
对于有人对Java的斯卡拉混合项目上工作,这是后话要注意。 即使做下面所示的方式配置后,
<build>
<testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
<plugins>
...
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<testSourceDir>${basedir}/src/test/scala</testSourceDir>
<testOutputDir>${basedir}/target/test-classes</testOutputDir>
</configuration>
</plugin>
</plugins>
</build>
和做一个Maven>更新项目 ,日食荣誉在项目中的src /测试/ java文件夹的输出目录,但不是在src /测试/斯卡拉文件夹。 (您可以通过右键单击特定源文件夹,但是这出并选择构建路径>配置输出文件夹...作为POM指定在前一种情况下应该显示的位置,而不是为以后的情况。
这已经是使用同阶M2E一个已知的bug这里提到: http://scala-ide.org/docs/tutorials/m2eclipse/
警告
如2013年3月的,一个错误会导致两者的src /主/阶和src /测试/阶以使用默认的输出文件夹(目标/类)。 构建测试时,因为它们的类文件将不会在目标/测试类结束,因为在命令行上构建他们什么时候这可能是令人困惑>。 您可以通过手动改变输出文件夹的src /测试/斯卡拉解决这个问题。
Answer 9:
Eclipse是不希望别的与类文件被搞混。 它假定,如果你还没有editted文件在eclipse它并没有改变,不需要进行编译。 我认为这个问题从日食和Maven共享输出目录茎。 我经常看到这一点,如果我MVN构建失败,它将已经删除的类文件作为清洁的一部分,但不是编译新的。 我认为最好的办法是将有单独建立MVN和Eclipse迪尔斯,但我从来没有考虑这一点。
Answer 10:
我的问题是不是JUnit的插件,而是在我的pom.xml的配置。
检查所有的回答这个问题,@ Gulats的回答暗示我,我应该尝试设置后testOutputDirectory
在我的Maven的编译器插件部分,该诀窍:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<testOutputDir>${basedir}/target/test-classes</testOutputDir>
</configuration>
</plugin>
文章来源: Eclipse/Maven: JUnit tests not compiled when running them