运行 通过 PowerMockRunner class 连接到自定义数据库驱动程序时出错
Getting error while connecting to custom db driver when running through PowerMockRunner class
当我尝试连接到数据库时,我的 junit class 出现以下错误,
我正在为我的 junit 使用 PowerMockRunner。我尝试连接的驱动程序不是众所周知的或开源的,它是我公司制作的自定义驱动程序。是引起问题的那个吗?
痕迹是:
WARNING: Error while registering Oracle JDBC Diagnosability MBean.
java.lang.LinkageError: loading constraint violation: loader "org/powermock/core/classloader/javassist/JavassistMockClassLoader@591550a" previously initiated loading for a different type with name "javax/management/MBeanServer" defined by loader "com/ibm/oti/vm/BootstrapClassLoader@7ecd7c73"
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:397)
at java.lang.ClassLoader.defineClass(ClassLoader.java:358)
at org.powermock.core.classloader.javassist.JavassistMockClassLoader.loadUnmockedClass(JavassistMockClassLoader.java:90)
at org.powermock.core.classloader.MockClassLoader.loadClassByThisClassLoader(MockClassLoader.java:104)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:147)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:98)
at java.lang.ClassLoader.loadClass(ClassLoader.java:880)
at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:409)
at oracle.jdbc.driver.OracleDriver.run(OracleDriver.java:241)
at java.security.AccessController.doPrivileged(AccessController.java:678)
at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:237)
at java.lang.Class.forNameImpl(Native Method)
你的测试中有 @PrepareForTest
注释吗?
如果是,那么当您连接时,它会引用存根 class 并抛出预期。
添加@PowerMockIgnore
注释以忽略
@RunWith (PowerMockRunner.class)
...
@PowerMockIgnore({"java.sql.*", "javax.management.*", "org.apache.http.conn.ssl.*", "com.amazonaws.*", "javax.net.ssl.*","com.sun.*"})
public class ... {}
尝试在 class 声明
上方添加以下注释和其他注释
@PowerMockIgnore({"javax.management.*"})
当我尝试连接到数据库时,我的 junit class 出现以下错误, 我正在为我的 junit 使用 PowerMockRunner。我尝试连接的驱动程序不是众所周知的或开源的,它是我公司制作的自定义驱动程序。是引起问题的那个吗? 痕迹是:
WARNING: Error while registering Oracle JDBC Diagnosability MBean.
java.lang.LinkageError: loading constraint violation: loader "org/powermock/core/classloader/javassist/JavassistMockClassLoader@591550a" previously initiated loading for a different type with name "javax/management/MBeanServer" defined by loader "com/ibm/oti/vm/BootstrapClassLoader@7ecd7c73"
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClassInternal(ClassLoader.java:397)
at java.lang.ClassLoader.defineClass(ClassLoader.java:358)
at org.powermock.core.classloader.javassist.JavassistMockClassLoader.loadUnmockedClass(JavassistMockClassLoader.java:90)
at org.powermock.core.classloader.MockClassLoader.loadClassByThisClassLoader(MockClassLoader.java:104)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:147)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:98)
at java.lang.ClassLoader.loadClass(ClassLoader.java:880)
at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:409)
at oracle.jdbc.driver.OracleDriver.run(OracleDriver.java:241)
at java.security.AccessController.doPrivileged(AccessController.java:678)
at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:237)
at java.lang.Class.forNameImpl(Native Method)
你的测试中有 @PrepareForTest
注释吗?
如果是,那么当您连接时,它会引用存根 class 并抛出预期。
添加@PowerMockIgnore
注释以忽略
@RunWith (PowerMockRunner.class)
...
@PowerMockIgnore({"java.sql.*", "javax.management.*", "org.apache.http.conn.ssl.*", "com.amazonaws.*", "javax.net.ssl.*","com.sun.*"})
public class ... {}
尝试在 class 声明
上方添加以下注释和其他注释@PowerMockIgnore({"javax.management.*"})