gpt4 book ai didi

java - 从 JDK 1.6 移动到 JDK 1.7 的 PowerMockito 测试正在违反约束

转载 作者:行者123 更新时间:2023-11-29 05:29:47 25 4
gpt4 key购买 nike

我们有一些测试在 JDK 1.6 上运行良好。我们现在转向 JDK 1.7。这些测试在 Eclipse 中运行良好。当我们从 Ant 构建中运行这些测试时,我们会看到如下错误:

junit.framework.TestListener: addError(<testmethodname>, loader constraint violation:
when resolving overridden method
"com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Lorg/w3c/dom/Node;)Ljava/lang/Object;"
the class loader (instance of org/powermock/core/classloader/MockClassLoader) of the current class,
com/sun/xml/bind/v2/runtime/unmarshaller/UnmarshallerImpl, and its superclass loader (instance of <bootloader>),
have different Class objects for the type
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Lorg/w3c/dom/Node;)Ljava/lang/Object; used in the signature)

当我们第一次看到这个时,我们正在使用 PowerMockito 1.5。我刚刚尝试升级到 1.5.4 和所有相关依赖项,结果没有任何变化。

这显示了我们正在使用的类注释:

@RunWith(PowerMockRunner.class)
@PowerMockIgnore({ "javax.xml.*", "org.xml.sax.*" })
@PrepareForTest(<classundertest>.class)
public class <classundertest>Test extends MockServiceBase {

这可能是什么问题?

最佳答案

昨晚我终于找到了解决方法。关键是向“@PowerMockIgnore”注释添加额外的包掩码。我尝试的第一件事就是添加“com.sun.xml.”。我原以为这没有任何区别,但我认为它只是修复了引用该包的测试。其余的引用是“com.sun.org.”,我没有意识到这一点。当我最终也添加“com.sun.org.*”时,它修复了剩余的测试。

关于java - 从 JDK 1.6 移动到 JDK 1.7 的 PowerMockito 测试正在违反约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21516065/

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