【发布时间】:2015-12-08 03:30:47
【问题描述】:
在编写测试时,我想单独运行它们。但是,由于我已经从默认的 Eclipse Java 构建器切换到 Maven,所以这不再可能了。观察:
直到今天我都可以打开一个 JUnit 测试源文件并从工具栏中选择
Run as | JUnit test。在我迁移到 Maven 之前,Eclipse 在需要时构建了单元测试。从 Maven 开始,我会得到一个
ClassNotFoundException,以防我之前没有明确编译过测试。如果我选择 POM 并执行Run as | Maven test,我可以绕过它。这将编译测试并运行所有测试。如果我现在再次选择单元测试并从工具栏中选择
Run as | JUnit test,它将执行测试。
由于这太不方便了,我希望恢复“旧”行为,我认为这应该只是一个配置问题。
我有
- 阅读Running a single test in Eclipse,但它描述了一个没有Maven 的问题。基本上,预期的行为是我以前的行为。
- 阅读Running JUnit tests with Maven under Eclipse 是我目前拥有的。我有 Surefire,我可以在选择 POM 时运行所有测试。
- 我的Surefire version is 2.18
- 将我的项目的目录结构转换为默认的 Maven 布局(以前没有)
- Running a single test in Maven - No tests were executed 不适用,因为我想从 Eclipse 而不是命令行运行测试。
- [x] 自动启用构建
- [x] Maven 项目生成器在项目属性中配置
- mailing list 停止未解决
- 阅读Surefire arguments
我现在要放弃了。
如何进行高效的红绿重构,即一次只运行一个单元测试而不为每个测试添加运行配置?
【问题讨论】:
-
一般来说这是可能的。我认为您的 Maven/Eclipse 集成存在配置问题。两者(Maven 和 Eclipse)是否使用相同的目标目录(即 .class 文件的存储位置)?
-
@Jan:在 Java 构建文件中,我将“默认输出文件夹”设置为 /target/classes。源文件夹指向那里(/src/main/java、/src/main/resources),但单元测试(src/test/java)指向/target/test-classes。
-
在我的 POM 中,我删除了特定的目录名称,因此它也构建到 /target/classes 和 /target/test-classes。
-
您是如何详细“从默认的 Eclipse Java builder 切换到 Maven”的?您是否尝试过 • 创建一个干净的新 Maven 项目 • 将主要/测试源/资源复制到其中 • 相应地调整
pom.xml?
标签: java eclipse maven unit-testing junit