让Eclipse识别正常源文件和测试源文件之间的区别



我使用的是带有Maven Integration的Eclipse 4.3.1。

Eclipse无法识别正常源文件和测试源文件之间的区别。

例如:当我使用Mockito的一个类,它的范围是在正常的源文件夹中测试时,一切似乎都很好。或者,当我错误地在测试源文件夹中创建了一个类时,什么也不会发生。

只有当Jenkins进行Maven构建时,才会显示编译错误。

我能以某种方式使Eclipse正常工作吗?

您必须区分运行时和编译时。

  1. 编译时间:Eclipse只支持每个项目一个构建路径。如果测试文件和应用程序文件共享同一个项目,那么它们共享相同的编译时类路径。这意味着您可以访问src目录(test或main)中的任何类以及任何依赖项中的类。Eclipse不能将其标记为错误,因为它看不到所有这些文件之间的区别。

  2. 运行时间:Eclipse在运行时允许不同的类路径,m2e支持这一点。每个被禁止的访问都会导致RuntimeException(ClassNotFoundException)。

运行时的访问如下:

# access from -> access to
src/main/java -> jar(scope: compile) [allowed]
src/main/java -> jar(scope: test)    [forbidden]
src/main/java -> src/test/java       [forbidden]
src/test/java -> jar(scope: compile) [allowed]
src/test/java -> jar(scope: test)    [allowed]
src/test/java -> src/main/java       [allowed]

回答您的问题:如果不修补eclipse,您想要什么是不可能的。尽管您可以将测试文件和应用程序拆分为单独的项目。

最简单的解决方案是在签入之前在本地机器上运行/测试您的应用程序

最新更新