1

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

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

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

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 移动到 'package com.xxx.xxx.tracker.utils.test'
  • 将包声明更改为“test.java.com.xxx.xxx.tracker.utils.test”

test.java我想将 junit 保留在 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 插件。

4

4 回答 4

3

您的结构和类路径有问题。使用您描述的布局,文件夹 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
于 2013-02-08T23:11:48.987 回答
2

在 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 插件更新项目配置时,您都会再次看到嵌套异常消息。

如果你真的想要这种设置,你需要相应地配置构建路径(右键单击项目 - 构建路径 - 配置构建路径)。

于 2013-02-08T22:03:50.927 回答
1

尝试向test/java您的项目添加一个新文件夹并将其配置为Project > Properties > Java Build Path. 看看Source标签。

您的目录布局应该是:

project/
-> src/
-> test/

使用.test作为测试包的后缀可能不是必需的,并且x.y.z.MyClassx.y.z.MyClassTest.

于 2013-02-08T21:43:55.390 回答
0

这正是我所做的。

  • 创建新的源目录:src/test/javasrc/main/java.
  • 获取我当前所有的 com.xxx.xxx.trackar* 包,全选,右键单击Refactor > Move,我将它们移动到src/main/java
  • src/test/java使用不带 .test 后缀的包名创建我的新 junit 测试。
  • 编辑 pom.xml 以符合新的源目录。
  • 右键单击项目Maven > update Project
  • Project > Properties > Java Build PathSource标签。确保src/test/java并且src/main/java在里面并且src不在里面。如果不正确,请返回并再次更新 pom.xml(并查看有效的 pom)...
  • 关闭并再次打开 Eclipse。
  • 包名错误消失了!!!!!!耶!

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

于 2013-02-11T17:52:13.457 回答