让Eclipse识别普通源文件和测试源文件之间的区别

时间:2014-02-13 09:12:32

标签: java eclipse maven testing dependencies

我正在使用Eclipse 4.3.1与Maven集成。

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

例如:当我使用一个Mockito类,其范围是在普通源文件夹中测试时,一切似乎都很好。或者当我在测试源文件夹中错误地创建一个类时,没有任何反应。

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

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

1 个答案:

答案 0 :(得分:2)

你必须在运行时和编译时间之间做出改变。

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

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

  3. 运行时访问如下:

    # 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]
    

    回答你的问题:没有修补日食,你想要的是什么。 虽然您可以将测试文件和应用程序拆分为单独的项目。

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