@PowerMockIgnore在项目级别

abh*_*hig 6 java powermock maven-3

在Maven中运行时,在powermock测试用例中出现以下错误:

java.lang.LinkageError: loader constraint violation: loader (instance of org/powermock/core/classloader/MockClassLoader) previously initiated loading for a different type with name "javax/management/MBeanServer"
Run Code Online (Sandbox Code Playgroud)

解决方案是添加注释

   @PowerMockIgnore("javax.management.*")
Run Code Online (Sandbox Code Playgroud)

问题是我有很多测试文件,我必须在其中添加此批注。

有没有一种方法可以在项目级别或在Maven中添加?

谢谢

Art*_*nov 9

由于PowerMock 1.7.0您可以使用配置文件指定要忽略的包。

powermock.global-ignore=org.myproject.*

可以使用逗号指定多个包/类:

powermock.global-ignore=org.myproject.*,org.3rdpatproject.SomeClass

此配置应用于类路径中的所有测试类。您可以通过将此文件添加到类路径来创建来启用配置:

org/powermock/extensions/configuration.properties

  • 在属性文件中使用时,不应使用双引号,即 powermock.global-ignore="org.myproject.*" -> powermock.global-ignore=org.myproject.* (5认同)

Gho*_*ica 5

我认为这是不可能的。

请记住,最终是JUnit执行这些测试用例。逐个。JUnit 对周围的 Maven“项目”一无所知。

JUnit 只知道它要处理的测试类中的元素。

因此:这些语句需要进入您的所有测试用例;理想情况下,仅在那些真正需要它的人中使用。

最后一句话:请不要误会我的意思,但在我看来,您真正的问题是您似乎在项目中不加区别地使用 PowerMock。这可能表明您的许多开发人员不知道如何编写可测试的代码……然后他们通过转向 PowerMock 来“修复”这个问题。您迟早有可能会后悔。

编辑:学习如何编写可测试代码——从这里开始!