- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 successfully integrating PowerMock into my project 之后,我遇到了这个错误:ClassCastException occurred while creating the mockito mock
。我找到了一个 solution , 但它不起作用。运行测试时,模拟某些 JRE 类的类中发生错误。如果删除使用 verifyStatic () 的测试,则错误消失。如果我单独运行有错误的测试,一切正常。我试过:
1) 在 Core
模块的 tests 文件夹中,我添加了包 org.mockito.configuration
和 MockitoConfigutation
。如果我运行调试器并将停止点设置为 enableClassCache()
方法,它会在我运行测试时停止,这意味着此类按预期工作。
2) 在有错误的类上添加@PowerMockIgnore({"*.*"})
注解。
有错误的示例类:
@PowerMockIgnore({"*.*"})
public class PersonTest extends AbsTest {
@BeforeClass
protected void setUp() throws Exception {
mock(ArrayList.class);
}
}
Core
模块上的
build.gradle
:
...
testCompile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
testCompile "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion"
testCompile 'org.testng:testng:6.13.1'
testCompile "org.mockito:mockito-core:2.8.9"
testCompile "org.powermock:powermock-api-mockito2:1.7.3"
testCompile "org.powermock:powermock-module-testng:1.7.3"
testCompileOnly "org.projectlombok:lombok:1.16.18"
...
错误:
org.mockito.exceptions.base.MockitoException: ClassCastException occurred while creating the mockito mock : class to mock : 'com.brashmonkey.spriter.Animation', loaded by classloader : 'sun.misc.Launcher$AppClassLoader@18b4aac2' created class : 'com.brashmonkey.spriter.Animation$MockitoMock$1309622717', loaded by classloader : 'net.bytebuddy.dynamic.loading.MultipleParentClassLoader@185f7840'
proxy instance class : 'com.brashmonkey.spriter.Animation$MockitoMock$1309622717', loaded by classloader : 'net.bytebuddy.dynamic.loading.MultipleParentClassLoader@185f7840'
instance creation by : ObjenesisInstantiatorYou might experience classloading issues, please ask the mockito mailing-list.
at ru.coolone.adventure_emulation.scripts.person.PersonTest.setUpClass(PersonTest.java:160) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124) at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:451) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142) at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:163) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105) at org.testng.TestRunner.privateRun(TestRunner.java:648) at org.testng.TestRunner.run(TestRunner.java:505) at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) at org.testng.SuiteRunner.run(SuiteRunner.java:364) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1187) at org.testng.TestNG.runSuitesLocally(TestNG.java:1116) at org.testng.TestNG.runSuites(TestNG.java:1028) at org.testng.TestNG.run(TestNG.java:996) at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127) Caused by: java.lang.ClassCastException: com.brashmonkey.spriter.Animation$MockitoMock$1309622717 cannot be cast to org.mockito.internal.creation.bytebuddy.MockAccess at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMock(SubclassByteBuddyMockMaker.java:48) at org.powermock.api.mockito.mockmaker.PowerMockMaker.createMock(PowerMockMaker.java:50) at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMethodInvocationControl(DefaultMockCreator.java:116) at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMock(DefaultMockCreator.java:69) at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.mock(DefaultMockCreator.java:46) at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:138) ... 26 more
最佳答案
好的,所以我有同样的行为,就是这条线:
@PowerMockIgnore({"*.*"})
这将忽略导致问题的 org.mockito.*
。更具体地说明被忽略的内容,例如:
@PowerMockIgnore({"org.robolectric.", "android.","com.sun.org.apache.xerces.internal.jaxp.*"})
关于unit-testing - 使用 PowerMock 后的 Mockito ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243051/
我有一个具有静态变量、静态 block 和静态函数的公共(public)类。我正在测试我的测试器类中的一个静态函数(比如 x),我通过在测试器类的类级别(Powermock)使用 @SuppressS
我正在尝试编写一个 TestNg 测试用例。这是为了测试当客户端抛出异常时会发生什么。我正在使用 PowerMock 来模拟客户端调用。下面是我的测试方法(只有UnitTest Snipped,而不是
我正在尝试模拟我的测试方法的内部方法调用 我的类(class)看起来像这样 public class App { public Student getStudent() { MyDAO dao
我正在尝试编写一个需要 的测试机器人电动 2.2 和 PowerMock ,因为被测代码依赖于一些 Android 库和第三方库以及我需要模拟的最终类。 鉴于我被迫通过以下方式使用 Robolectr
无论如何,tom 是否使用 Powermock 模拟类中的 super 方法调用? 例如: public void processRetrievedData() { super.processRe
运行Junit测试期间出现以下错误。 java.lang.NoClassDefFoundError: org/mockito/cglib/proxy/MethodInterceptor at
我想使用 PowerMock 模拟以下代码: ConnectionFactory rabbitMqFactory = createFactory(); com.rabbitmq.client.Conn
我收到 PowerMock 错误,但我没有使用 PowerMocking。我正在使用正常的模拟。这是我要测试的类(class): import java.util.List; import org.a
使用 TestNg + PowerMock + Mockito 时遇到 java.lang.ExceptionInInitializerError: Caused by: java.lang.Null
有没有办法注释@PowerMockIgnore 以忽略整个包,除了这个包中的一个类? 我希望做一些事情,例如: @PowerMockIgnore({ "foo.bar.ignore*\DoNotIgn
当我尝试执行以下简化的 JUnit 测试时,它成功了,但我收到一条错误消息:首先创建所有测试实例时不支持通知! @RunWith(PowerMockRunner.class) @PowerMockRu
我正在测试一些遗留代码并尝试使用 PowerMock 来模拟静态方法调用。我很快发现它与类加载器混淆了,这不是我认为有资格深入研究的问题。仅供引用,我的问题类似于 this但是在我的情况下发布的解决方
public class TestStatic { public static int methodstatic(){ return 3; } } @Test @Pre
我想通过Maven使用最新版本的powermock库(1.6.5)。但是我的包无法编译,因为 Maven 发现依赖收敛错误。下面您可以看到有 2 个不同版本的 org.objenesis:objene
我在 Stack 上看到过这个问题的另一个例子,但没有答案。谁能根据经验(或任何其他深奥的手段)告诉我这是否可能做到?我已经遵循了我能找到的所有模拟静态方法的示例,但还没有找到适用于抽象类中的静态方法
我在模拟 Calendar.getInstance() 时遇到问题。正如您现在一样,此方法返回一个日历 - 我正在 mock 的对象。 现在我的代码如下所示: @RunWith(PowerMockRu
我有一个带有静态方法的简单类,该方法通常会抛出空指针: public class MyClass { private static String s; public static fi
我有多个 HttpPost 请求,如下所示: try (CloseableHttpClient httpclient = HttpClients.createDefault()) { Http
我想通过Maven使用最新版本的powermock库(1.6.5)。但是我的包无法编译,因为 Maven 发现依赖收敛错误。下面您可以看到有 2 个不同版本的 org.objenesis:objene
我正在使用 PowerMock、EasyMock 组合。 如果没有另外指定,如何让每个模拟对象默认返回“null”? 现在,我必须对模拟对象的每个方法进行“预期”(或在mockito世界中的“何时”)
我是一名优秀的程序员,十分优秀!