Eclipse / Maven:运行时未编译的JUnittesting

我正在使用Maven和Eclipse(m2eclipse插件)的项目。 我遇到了JUnittesting的问题:

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

我也注意到,testing的类文件有时被放到classes子目录中,而不是test-classes

我真的无法弄清楚什么是错的。

JUnit的java文件位于src/main/java ,并正确命名( *Test.java )。

我是否必须通过Maven来编译和运行它们? 为什么Eclipse没有编译这些文件,我想运行它们? (有趣的是, 有时它确实有时候一切正常。)

我也遇到了与STS Eclipse(Spring开发版本),m2e和JUnit相同的问题。 解决方法是将src/test/java的输出文件夹设置为target/test-classes

  1. 右键单击Package Explorer中的src/test/java文件夹
  2. select构buildpath – > configuration输出文件夹
  3. inputtarget/test-classes ,单击确定

现在,testing类中的更改已经正确编译,您应该能够在Eclipse中运行JUnittesting。

问题是Eclipse将unit testing编译为默认输出文件夹target/classes而JUnit插件正确地尝试从test-classes运行它们。

这个问题有几个重复:

  • 在Eclipse中运行JUnitunit testing时使用ClassNotFoundException(使用Maven)
  • Eclipse没有看到我的新junittesting
  • junit不使用最新的文件

除了下面的答案

  1. 右键单击src / test / java文件夹
  2. select构buildpath – >configuration输出文件夹
  3. input目标/testing类,单击确定

您应该通过右键单击您的项目并转到“ 属性” – >“构build器”来检查并确保构build器已正确安装。 如果您看到您的构build器丢失,则需要安装一个。 就我而言,Maven项目具有AspectJ依赖性,当我使用Maven Eclipse插件构buildEclipse项目时,默认情况下它正在寻找一个AspectJ构build器。 我安装了AspectJ开发工具,解决了这个问题。

希望这可以帮助!

还有一点:JUnittesting类应该在src / test / java中,而不是src / main / java,否则Maven将不会将它们作为testing类正确检测到,它们将被包含在打包的jar中,而不包含在testingjar 。

对于您所面临的问题,最可能的解释是src/test/java的输出文件夹没有正确configuration。

您可以使用m2eclipse 手动修复此configuration ,而不是手动修复此configuration :只需右键单击该项目并selectMaven> Update Project

我面临同样的问题。 尝试以上build议configuration输出文件夹&Maven>更新项目,但都没有工作。 最后把我的testOutputDirectory改成了“build / classes”,现在unit testing正在被拾取和执行。

最后find了问题的原因。 在我的pom中,我们还configuration了如下的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> 

outputDirectoryconfiguration不需要,是上述问题的原因。 删除这个标签后,junit正在编译生成> testclasses文件夹,并且在maven构build过程中也正在运行。 Yippee 🙂

请检查可在您的pom.xml中configuration的“testSourceDirectory”path。 然后,将该文件夹(在“testSourceDirectory”path中configuration)添加到eclipse构buildpath。

请在下面的pom.xml中find示例“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> 

Eclipse不希望其他任何东西被分类的文件。 它假定如果你没有在eclipse中编辑文件,它没有改变,也不需要编译。 我认为这个问题来自eclipse和maven共享一个输出目录。 我经常看到,如果我的mvn构build失败,它将删除类文件的一部分,但没有编译新的。 我认为最好的解决办法是为mvn和eclipse分别制作dirs,但是我从来没有研究过这个。

确保项目图标上有感叹号! 在我的情况下,我忽略了有像感叹号感叹号项目图标

打开“标记”的angular度,然后根据提示排除故障。 什么“标记”的观点显示

在我称之为“mvn clean test”之后,junittesting类可以成功执行,因为它们没有引用在“标记”视angular中被警告的不可读jar。因此,很容易忽略它。