gpt4 book ai didi

java - 使用 Maven 和 Eclipse 测试 Java 模块白盒单元测试的依赖关系

转载 作者:行者123 更新时间:2023-12-01 19:14:53 24 4
gpt4 key购买 nike

我正在尝试使用 Maven 和 Eclipse 将现有 Java 项目转换为 Java 9+ 模块。项目有单元测试,单元测试有测试依赖项。我需要测试代码中提供测试依赖项,但我不希望它们在已发布的模块中暴露给世界其他地方。

我认为Testing in the Modular World很好地描述了 Maven 解决方案。总之,一种解决方案是在主源文件夹中创建一个 module-info.java ,并在测试文件夹中创建另一个。主文件夹中的文件具有真正的依赖关系。 test 文件夹中的文件添加了测试依赖项。

该解决方案在 Maven 中运行良好,我可以从命令行构建和运行测试。然而,当我将项目作为 Maven 项目导入 Eclipse 时,它​​却犹豫不决。 Eclipse 提示“构建路径包含重复的条目模块信息”并拒绝构建项目。

使用本文中的其他建议解决方案以及包含 --add-readsmodule-info.test 没有任何效果,并且在 Maven 和 Eclipse 中构建都会失败因为测试无法找到它们的依赖项。

为了让事情变得更复杂,我需要从 Maven 导入测试依赖项,但我还需要导入主代码未使用的标准 Java 模块。例如,一个单元测试依赖于 java.httpserver 提供的内置 Web 服务器,并且由于它是 JDK 的一部分,因此对测试依赖项所做的任何魔法都会错过它。

是否有适用于 Maven 和 Eclipse(最新版本)的解决方案?这听起来是一个非常常见的问题,并且模块系统已经存在了一段时间了。

请注意,我真的不想更改 Eclipse 中的项目设置。我可以摆弄 pom 文件中的插件,但添加所有开发人员都需要手动编辑生成/导入的项目设置的手动例程并不是一种选择。

编辑:有一个针对此问题的开放 Eclipse 错误报告,请参阅 Eclipse bug 536847 。似乎尚不支持,但也许有人可以提出解决方法?

最佳答案

Maven 中每个项目多类路径功能的 Eclipse 模拟已经被破坏很长时间了。症状是您可以使用测试依赖项来创建非测试类。

本质上,Eclipse 只是认为每个项目都有一个类路径,而不是两个并行的类路径,这会导致这样的事情......不做正确的事情。

我建议将每个有问题的项目分成两个。一份包含实际源,一份包含测试源(取决于实际源)。这将避免 Eclipse 错误,并且还允许您使用最新版本的 Java 进行测试,同时为旧版本的 Java 构建应用程序。

关于java - 使用 Maven 和 Eclipse 测试 Java 模块白盒单元测试的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59429579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com