2014-02-13 63 views
1

我使用Eclipse 4.3.1与Maven集成。使Eclipse识别正常源文件和测试源文件之间的区别

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

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

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

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

回答

2

您必须在运行时间和编译时间之间做出区别。

  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] 

要回答你的问题:你想要什么也不是没有可能打补丁蚀。 尽管您可以将测试文件和应用程序分割为单独的项目。

最简单的方法是运行/在检查之前,你的本地计算机上测试您的应用程序

+0

只是为了澄清,@荒诞,心灵暗示在检查前运行“MVN测试”本地 - 你可以这样做你可以在eclipse中使用maven/eclipse集成(或者也可以使用pom.xml从目录中的命令行)。我认为这是很好的建议! – unigeek

+0

@ user2317875“mvn test”根本没有任何帮助。你必须运行主应用程序。从Eclipse启动应用程序就足够了。 (mvn检查前检查还是很好的建议) –

+0

你是对的!我把它放在那里,并在阅读你最后一句关于在本地运行/测试你的应用程序的评论后评论。我的错误 - 谢谢! – unigeek

相关问题