在Maven中,您可以拥有编译时依赖项和测试依赖项。这是我喜欢的功能,M2Eclipse插件也可以在Eclipse中使用,这很棒。因此,如果我将jmock.jar
作为测试依赖项添加到我的项目中,它将显示在JUnit测试的类路径中,但在我调试应用程序本身时将不会出现。
这正是我现在想要实现的目标,但没有M2Eclipse或Maven。有没有办法在纯Eclipse中执行此操作? (可能没有安装任何插件。)
答案 0 :(得分:11)
您可以将所有测试分成另一个项目,并将主项目添加为依赖项(项目 - >属性 - &gt; Java构建路径 - &gt; <强>项目强> - &GT; 添加... 强>)
更新:为避免更改原始项目结构,您的测试项目可以使用链接的位置。
正常创建测试项目,您现在需要创建一个链接资源来引入src / test / java文件夹。最好使用变量创建它,以便您的项目可以保持一些平台独立性。 要创建新的链接文件夹,请选择新建 - &gt; 文件夹,在文件夹名称字段中输入 src ,然后点击高级&gt;&gt;
单击链接到文件系统中的文件夹 点击变量... 以显示选择路径变量对话框。
如果这是您第一次,或者您要链接到新位置,请选择新建... ,并为变量指定合理的名称和路径。如果所有项目都位于 c:\ workspaces \ foo **中,则调用变量** WORKSPACE_ROOT 并为其指定路径是有意义的。如果你有一些其他约定很好,但是在.project文件中添加注释是有意义的,这样有人就有机会弄清楚应该是什么样的正确值。
假设上面的值你现在可以在输入字段上设置 WORKSPACE_ROOT / [主题项目名称] / src 的值
确认您应该看到带有小箭头的src文件夹,并且如果您查看.project文件,请看到以下内容:
<linkedResources>
<link>
<name>src</name>
<type>2</type>
<locationURI>WORKSPACE_ROOT/esf-ns-core-rp/src</locationURI>
</link><!--NOTE the WORKSPACE_ROOT variable points to the folder containing the subject project's sandbox-->
</linkedResources>
您现在可以正常添加src / test / java文件夹作为源位置。
注意,您也可以通过将配置更改为以下内容来共享src / test / java文件夹:
<linkedResources>
<link>
<name>src/test/java</name>
<type>2</type>
<locationURI>WORKSPACE_ROOT/my-project/src/test/java</locationURI>
</link>
</linkedResources>
这可以更好地控制配置,但你必须重复src / test / resources,src / it / java等。
然后,您只能在测试项目中设置所有测试依赖项。
非常不漂亮,但它确实有用(我也使用过这种情况,我的测试合规性级别与主要合规级别不同,例如测试为1.5,目标环境为1.4)。
答案 1 :(得分:9)
我担心答案是你不能。有2个未解决的问题从与您的问题相关的3.5推迟:
答案 2 :(得分:1)
由于您同时使用Eclipse和Maven,因此可以解决它。 创建一个新的“Maven Build”运行配置,目标为“exec:java”,参数为“exec.mainClass = com.example.Starter”。这样,类路径将由Maven计算。
答案 3 :(得分:0)
实际上,如果你在eclipse中查看Maven如何集成依赖关系,那么测试库或运行时依赖关系就不会对测试库的访问产生影响。
Maven将在打包应用程序时以及在maven控制该部分的执行时生成运行时类路径时保持不同。当涉及eclipse时,Maven只是毫无疑问地将它们添加到eclipse构建路径中。
为什么你需要这样分开呢?这会对你有什么帮助?
答案 4 :(得分:0)
Eclipse Photon 最终添加了此功能,并支持m2e。