【发布时间】:2018-01-11 19:38:30
【问题描述】:
我正在尝试将 powermock 库添加到工作项目中,但出现错误。
我如何添加它:
1) AbsTest extends PowerMockTestCase
2) Build.gradle 依赖项
3) 在某些测试中添加@PrepareForTest({SomeClass.class})。在这一步之后发生了这个错误。
在 build.gradle 中包含所有库。 在初始化 HeadlessApplication 以使用 Gdx.* 静态变量的地方发生错误。
项目中的所有测试都扩展了这个类:
abstract public class AbsTest extends PowerMockTestCase {
static {
initGdx();
}
protected static void initGdx() {
// Initialize libgdx headless for use static vars (e.g. Gdx.input.setInputProcessor)
final HeadlessApplicationConfiguration config = new HeadlessApplicationConfiguration();
config.renderInterval = 1f / 60; // Likely want 1f/60 for 60 fps
new HeadlessApplication(mock(Core.class), config); <=== ERROR LINE
}
@BeforeMethod(alwaysRun = true)
public void initMethod() throws Exception {
// Initialize mocks
MockitoAnnotations.initMocks(this);
}
}
错误:
org.testng.TestNGException:实例化时出错 类 ru.coolone.adventure_emulation.input.InputGroupsTest: null at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:435) 在 org.testng.internal.ClassHelper.createInstance(ClassHelper.java:336) 在 org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:125) 在 org.testng.internal.ClassImpl.getInstances(ClassImpl.java:190) 在 org.testng.TestClass.getInstances(TestClass.java:95) 在 org.testng.TestClass.initTestClassesAndInstances(TestClass.java:81) 在 org.testng.TestClass.init(TestClass.java:73) 在 org.testng.TestClass.(TestClass.java:38) 在 org.testng.TestRunner.initMethods(TestRunner.java:389) 在 org.testng.TestRunner.init(TestRunner.java:271) 在 org.testng.TestRunner.init(TestRunner.java:241) 在 org.testng.TestRunner.(TestRunner.java:167) 在 org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:663) 在 org.testng.SuiteRunner.init(SuiteRunner.java:260) 在 org.testng.SuiteRunner.(SuiteRunner.java:198) 在 org.testng.TestNG.createSuiteRunner(TestNG.java:1271) 在 org.testng.TestNG.createSuiteRunners(TestNG.java:1249) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1107) 在 org.testng.TestNG.runSuites(TestNG.java:1028) 在 org.testng.TestNG.run(TestNG.java:996) 在 org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) 在 org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127) 引起:java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.powermock.modules.testng.internal.TestClassInstanceFactory.create(TestClassInstanceFactory.java:51) 在 org.powermock.modules.testng.internal.PowerMockClassloaderObjectFactory.newInstance(PowerMockClassloaderObjectFactory.java:46) 在 org.powermock.modules.testng.PowerMockObjectFactory.newInstance(PowerMockObjectFactory.java:43) 在 org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:423) ... 21 更多原因:java.lang.IllegalStateException:无法 初始化插件:接口 org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:66) 在 com.sun.proxy.$Proxy19.isTypeMockable(Unknown Source) 在 org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29) 在 org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22) 在 org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:186) 在 org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:180) 在 org.mockito.internal.MockitoCore.mock(MockitoCore.java:62) 在 org.mockito.Mockito.mock(Mockito.java:1729) 在 org.mockito.Mockito.mock(Mockito.java:1642) 在 ru.coolone.adventure_emulation.AbsTest.initGdx(AbsTest.java:37) 在 ru.coolone.adventure_emulation.AbsTest.(AbsTest.java:30) ... 29 更多原因:java.lang.IllegalStateException:加载失败 在中声明的接口 org.mockito.plugins.MockMaker 实现 sun.misc.CompoundEnumeration@7dc3712 在 org.mockito.internal.configuration.plugins.PluginLoader.loadImpl(PluginLoader.java:101) 在 org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:45) 在 org.mockito.internal.configuration.plugins.PluginRegistry.(PluginRegistry.java:18) 在 org.mockito.internal.configuration.plugins.Plugins.(Plugins.java:17) 在 org.mockito.internal.util.MockUtil.(MockUtil.java:24) ... 37 更多原因:java.lang.ClassCastException:无法转换 org.powermock.api.mockito.mockmaker.PowerMockMaker 到 org.mockito.plugins.MockMaker 在 java.lang.Class.cast(Class.java:3369) 在 org.mockito.internal.configuration.plugins.PluginLoader.loadImpl(PluginLoader.java:97) ... 41 更多
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"
...
【问题讨论】:
标签: libgdx mockito testng powermock powermockito