我使用的是带有Maven Integration的Eclipse 4.3.1。
Eclipse无法识别正常源文件和测试源文件之间的区别。
例如:当我使用Mockito的一个类,它的范围是在正常的源文件夹中测试时,一切似乎都很好。或者,当我错误地在测试源文件夹中创建了一个类时,什么也不会发生。
只有当Jenkins进行Maven构建时,才会显示编译错误。
我能以某种方式使Eclipse正常工作吗?
您必须区分运行时和编译时。
-
编译时间:Eclipse只支持每个项目一个构建路径。如果测试文件和应用程序文件共享同一个项目,那么它们共享相同的编译时类路径。这意味着您可以访问src目录(test或main)中的任何类以及任何依赖项中的类。Eclipse不能将其标记为错误,因为它看不到所有这些文件之间的区别。
-
运行时间: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,您想要什么是不可能的。尽管您可以将测试文件和应用程序拆分为单独的项目。
最简单的解决方案是在签入之前在本地机器上运行/测试您的应用程序