繁体   English   中英

Eclipse(Maven)中的Junit软件包命名冲突

[英]Junit package naming conflict in Eclipse (Maven)

我想对我的junit测试使用默认的maven目录,所以:

  • 在Eclipse中,我创建了一个test/java文件夹。
  • 我在那里用package com.xxx.xxx.tracker.utils.test;创建了一个junit类package com.xxx.xxx.tracker.utils.test;

但是日食给我一个错误。 它想将包名称更改为

package test.java.com.xxx.xxx.tracker.utils.test;

或者eclipse要我将其移动到与com/xxx/xxx/tracker/utils/test对应的文件夹

这是来自eclipse的确切消息:

  • 声明的软件包“ com.xxx.xxx.tracker.utils.test”与预期的软件包“ test.java.com.xxx.xxx.tracker.utils.test”不匹配
  • 2个快速修复可用
  • 将xxxTest.java移动到“包com.xxx.xxx.tracker.utils.test”
  • 将包声明更改为'test.java.com.xxx.xxx.tracker.utils.test'

我想将junit保留在test / java文件夹中,以使其脱离构建并遵循约定,但是在我的包名称中包含test.java没有意义。

有没有办法使软件包名称保持我想要的方式,并在test / java文件夹中保留它?

编辑:是因为我的“ src”文件夹中有项目吗? 例如:

src/
   com.xxx.xxx.tracker.utils.Xxxx.java
   test/
       java/
           com.xxx.xxx.tracker.utils.XxxxTest.java

这个项目不是从Maven开始的。 它是由其他人转换的。

编辑2 :更多的燃料为火:

这是我的pom.xml(我没有设置)中的内容。

<build>
<sourceDirectory>/home/me/workspace/proj_PARENT/proj_Classes/src</sourceDirectory>
<testSourceDirectory>/home/me/workspace/proj_PARENT/proj_Classes/src/test/java</testSourceDirectory>

我确实有eclipse m2e插件。

您对结构和类路径有疑问。 使用您描述的布局,文件夹src是您的源代码的根目录。 但是它包含测试,应该放在子文件夹中。 在您的情况下,您有嵌套的源文件夹。 这必须导致编译问题,因为* .java文件将存在于两个软件包中。 其中一个软件包无效。

src/
   com.xxx.xxx.tracker.utils.Xxxx.java
   test/
       java/
           com.xxx.xxx.tracker.utils.XxxxTest.java

现在,您应该创建两个src文件夹。

src/
   main/
       java/
           com.xxx.xxx.tracker.utils.Xxxx.java
   test/
       java/
           com.xxx.xxx.tracker.utils.XxxxTest.java

在Eclipse中遵循标准Maven目录布局的Maven项目的构建路径中应包含以下源文件夹(.classpath文件中的片段)

<classpathentry kind="src" output="target/classes" path="src/main/java"/> 
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>

您的Eclipse项目资源管理器应如下所示:

在此处输入图片说明

如果您使用的是Eclipse m2e插件,则在项目上创建src / main / java和src / test / java文件夹将导致它们自动添加到构建路径。

更新:

在问题更新中,您显示的是将testSourceDirectory嵌套在sourceDirectory中。 大多数IDE都会警告您不要这样做,并且很可能会导致问题。 Eclipse可以通过从源文件夹中排除测试部分来处理它,但是每次您尝试通过m2e插件更新项目配置时,都会再次看到嵌套的异常msg。

如果您确实需要这种设置,则需要相应地配置构建路径(右键单击项目-构建路径-配置构建路径)。

尝试将新文件夹test/java到项目中,然后在Project > Properties > Java Build Path中将其配置为源文件夹。 查看“ Source选项卡。

您的目录布局应为:

project/
-> src/
-> test/

使用.test作为测试包的后缀可能没有必要,并且可以在xyzMyClassTest测试xyzMyClass时为您xyzMyClass导入语句。

这正是我所做的。

  • 创建新的源目录: src/test/javasrc/main/java
  • 拿我所有当前的com.xxx.xxx.trackar *软件包,全选,右键单击Refactor > Move然后将它们移动到src/main/java
  • 使用不带.test后缀的包名称在src/test/java创建我的新junit测试。
  • 编辑pom.xml以符合新的源目录。
  • 右键单击项目Maven > update Project
  • Project > Properties > Java Build Path请参见“ Source选项卡。 确保src/test/javasrc/main/java在其中,而src在其中。 如果不正确,请返回并再次更新pom.xml(并查看有效的pom)...
  • 关闭并再次打开日食。
  • 包名称错误不见了!!!!!! 好极了!

谢谢大家的帮助。 PS:我丢失了版本控制历史记录,但这是因为我使用的是旧版系统。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM