运行 PIT 时从类路径中排除提供的依赖项
Exclude provided dependency from classpath when running PIT
我想在 Android 项目中使用 PIT (pitest.org) 插件。我正在使用 Android Maven 插件并且有一个相当标准的 POM。 Android JAR 由 Maven 包含在 provided 范围内,并包含实际源代码,而不是来自 SDK 的存根 JAR。
运行 通过 Maven 插件从命令行进行 PIT 失败:
[ERROR] Failed to execute goal org.pitest:pitest-maven:1.1.3:mutationCoverage (default-cli) on project easystat: Executi
on default-cli of goal org.pitest:pitest-maven:1.1.3:mutationCoverage failed: Coverage generation slave exited abnormall
y!
[ERROR]
[ERROR] Please copy and paste the information and the complete stacktrace below when reporting an issue
[ERROR] VM : Java HotSpot(TM) 64-Bit Server VM
[ERROR] Vendor : Oracle Corporation
[ERROR] Version : 25.25-b02
[ERROR] Uptime : 3804
[ERROR] Input ->
[ERROR] 1 : -Dclassworlds.conf=C:\Users\Tom\maven\bin\..\bin\m2.conf
[ERROR] 2 : -Dmaven.home=C:\Users\Tom\maven\bin\..
[ERROR] BootClassPathSupported : true
[ERROR]
[ERROR]
[ERROR] Please copy and paste the information and the complete stacktrace below when reporting an issue
[ERROR] VM : Java HotSpot(TM) 64-Bit Server VM
[ERROR] Vendor : Oracle Corporation
[ERROR] Version : 25.25-b02
[ERROR] Uptime : 3804
[ERROR] Input ->
[ERROR] 1 : -Dclassworlds.conf=C:\Users\Tom\maven\bin\..\bin\m2.conf
[ERROR] 2 : -Dmaven.home=C:\Users\Tom\maven\bin\..
[ERROR] BootClassPathSupported : true
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.pitest:pitest-maven:1.1.3:mutationCov
erage (default-cli) on project easystat: Execution default-cli of goal org.pitest:pitest-maven:1.1.3:mutationCoverage fa
iled: Coverage generation slave exited abnormally!
Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : Java HotSpot(TM) 64-Bit Server VM
Vendor : Oracle Corporation
Version : 25.25-b02
Uptime : 3804
Input ->
1 : -Dclassworlds.conf=C:\Users\Tom\maven\bin\..\bin\m2.conf
2 : -Dmaven.home=C:\Users\Tom\maven\bin\..
BootClassPathSupported : true
之前关于 Google 组的一些讨论表明,包含旧版本的 JUnit 可能会导致这样的错误,并且看起来 Android JAR 包含 3.x JUnit 库(感谢 Android 团队...)。为了证实或否认这种预感,我想从 PIT 的类路径中排除 Android JAR,因为我已经在 Surefire 测试阶段这样做了,但我没有看到这样做的任何选择。
有没有办法从 PIT 中排除提供的依赖项,而不必更改该依赖项的范围?
PIT 当前不提供过滤依赖项的方法,它将使用测试范围内项目的所有依赖项。
这将是一个明智的添加功能 - 欢迎提出问题。
您可以通过将 junit4 放在 classpath/dependencies 中的 android jar 之前来解决这个问题。
我想在 Android 项目中使用 PIT (pitest.org) 插件。我正在使用 Android Maven 插件并且有一个相当标准的 POM。 Android JAR 由 Maven 包含在 provided 范围内,并包含实际源代码,而不是来自 SDK 的存根 JAR。
运行 通过 Maven 插件从命令行进行 PIT 失败:
[ERROR] Failed to execute goal org.pitest:pitest-maven:1.1.3:mutationCoverage (default-cli) on project easystat: Executi
on default-cli of goal org.pitest:pitest-maven:1.1.3:mutationCoverage failed: Coverage generation slave exited abnormall
y!
[ERROR]
[ERROR] Please copy and paste the information and the complete stacktrace below when reporting an issue
[ERROR] VM : Java HotSpot(TM) 64-Bit Server VM
[ERROR] Vendor : Oracle Corporation
[ERROR] Version : 25.25-b02
[ERROR] Uptime : 3804
[ERROR] Input ->
[ERROR] 1 : -Dclassworlds.conf=C:\Users\Tom\maven\bin\..\bin\m2.conf
[ERROR] 2 : -Dmaven.home=C:\Users\Tom\maven\bin\..
[ERROR] BootClassPathSupported : true
[ERROR]
[ERROR]
[ERROR] Please copy and paste the information and the complete stacktrace below when reporting an issue
[ERROR] VM : Java HotSpot(TM) 64-Bit Server VM
[ERROR] Vendor : Oracle Corporation
[ERROR] Version : 25.25-b02
[ERROR] Uptime : 3804
[ERROR] Input ->
[ERROR] 1 : -Dclassworlds.conf=C:\Users\Tom\maven\bin\..\bin\m2.conf
[ERROR] 2 : -Dmaven.home=C:\Users\Tom\maven\bin\..
[ERROR] BootClassPathSupported : true
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.pitest:pitest-maven:1.1.3:mutationCov
erage (default-cli) on project easystat: Execution default-cli of goal org.pitest:pitest-maven:1.1.3:mutationCoverage fa
iled: Coverage generation slave exited abnormally!
Please copy and paste the information and the complete stacktrace below when reporting an issue
VM : Java HotSpot(TM) 64-Bit Server VM
Vendor : Oracle Corporation
Version : 25.25-b02
Uptime : 3804
Input ->
1 : -Dclassworlds.conf=C:\Users\Tom\maven\bin\..\bin\m2.conf
2 : -Dmaven.home=C:\Users\Tom\maven\bin\..
BootClassPathSupported : true
之前关于 Google 组的一些讨论表明,包含旧版本的 JUnit 可能会导致这样的错误,并且看起来 Android JAR 包含 3.x JUnit 库(感谢 Android 团队...)。为了证实或否认这种预感,我想从 PIT 的类路径中排除 Android JAR,因为我已经在 Surefire 测试阶段这样做了,但我没有看到这样做的任何选择。
有没有办法从 PIT 中排除提供的依赖项,而不必更改该依赖项的范围?
PIT 当前不提供过滤依赖项的方法,它将使用测试范围内项目的所有依赖项。
这将是一个明智的添加功能 - 欢迎提出问题。
您可以通过将 junit4 放在 classpath/dependencies 中的 android jar 之前来解决这个问题。