我有一个单模块项目,其中有一些需要外部硬件设备的单元测试。我不希望执行这些测试,除非我表明该设备可用。
我觉得使用 Maven 属性和 SureFire 排除/包含配置可以解决这个问题,但我不太明白如何做到这一点。一个similar question展示了如何基于 Maven 属性禁用/启用项目中的所有测试,但并不能完全回答我的问题。
总之,我希望确定一种模式(例如 **/*ResourceTest.java
)来描述我不想运行的测试,除非我传递 Maven 属性来启用它们.
例如
mvn clean install
(运行标准测试,但跳过设备相关测试)
mvn -Drun.device.tests=true clean install
(运行所有测试)
提前致谢。
(进行编辑以删除“资源”一词的误导性用法 > 替换为“硬件设备”)。
最佳答案
您也可以只使用 JUnit Assume决定(在测试内部)是否应该执行或跳过测试的方法。
恕我直言,最好的选择是将设备相关测试“声明”为“集成测试”,并让它们由 Maven Failsafe Plugin 执行。 。我认为这将是“内置”maven 解决方案,没有任何配置文件“魔法”。
关于maven - 通过传递命令行开关启用某些 Maven 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11628197/