[英]Junit package naming conflict in Eclipse (Maven)
我想对我的junit测试使用默认的maven目录,所以:
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/java
和src/main/java
。 Refactor > Move
然后将它们移动到src/main/java
src/test/java
创建我的新junit测试。 Maven > update Project
。 Project > Properties > Java Build Path
请参见“ Source
选项卡。 确保src/test/java
和src/main/java
在其中,而src
在其中。 如果不正确,请返回并再次更新pom.xml(并查看有效的pom)... 谢谢大家的帮助。 PS:我丢失了版本控制历史记录,但这是因为我使用的是旧版系统。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.