当前位置: 首页 > 知识库问答 >
问题:

Mockito PowerMock TestNG Libgdx

邵伟
2023-03-14

我正在尝试将powermock库添加到工作项目中,但出现了错误。

我如何添加它:

1) absest扩展了PowerMockTestCase

2) 建造。梯度依赖

3)在一些测试中添加@准备测试({lass.class})。在此步骤后发生此错误。

内置的。所有的图书馆都包括在内。初始化HeadMessage应用程序以使用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);
    }
}

错误:

组织。testng。TestNgeException:实例化类ru时出错。酷一。冒险与模拟。输入InputGroupsTest:在组织中为空。testng。内部的类助手。在org上创建instance1(ClassHelper.java:435)。testng。内部的类助手。org上的createInstance(ClassHelper.java:336)。testng。内部的ClassImpl。位于org的getDefaultInstance(ClassImpl.java:125)。testng。内部的ClassImpl。org上的getInstances(ClassImpl.java:190)。testng。测试类。org上的getInstances(TestClass.java:95)。testng。测试类。initTestClassesAndInstances(TestClass.java:81)位于org。testng。测试类。org上的init(TestClass.java:73)。testng。测试类。(TestClass.java:38)位于org。testng。测试者。org上的initMethods(TestRunner.java:389)。testng。测试者。org上的init(TestRunner.java:271)。testng。测试者。org上的init(TestRunner.java:241)。testng。测试者。(TestRunner.java:167)位于org。testng。SuiteRunner$DefaultTestRunnerFactory。newTestRunner(SuiteRunner.java:663)位于org。testng。SuiteRunner。org上的init(SuiteRunner.java:260)。testng。SuiteRunner。(SuiteRunner.java:198)位于org。testng。TestNG。在org上创建SuiteRunner(TestNG.java:1271)。testng。TestNG。在org上创建SuiteRunners(TestNG.java:1249)。testng。TestNG。在org上本地运行suitesLocal(TestNG.java:1107)。testng。TestNG。org上的runSuites(TestNG.java:1028)。testng。TestNG。在org上运行(TestNG.java:996)。testng。我想是远程测试。在org上运行(idearemotestng.java:72)。testng。远程测试启动程序。main(RemoteTestNGStarter.java:127)由:java引起。lang.ExceptionInInitializerRor在太阳下。反映国家结构附件MPL。sun上的newInstance0(本机方法)。反映国家结构附件MPL。sun上的newInstance(NativeConstructorAccessorImpl.java:62)。反映删除构造函数或AccessorImpl。java上的newInstance(DelegatingConstructorAccessorImpl.java:45)。朗。反思。构造器。org上的newInstance(Constructor.java:423)。powermock。模块。testng。内部的TestClassInstanceFactory。在org上创建(TestClassInstanceFactory.java:51)。powermock。模块。testng。内部的PowerMockClassLoaderObjecthtml" target="_blank">工厂。org上的newInstance(PowerMockClassloaderObjectFactory.java:46)。powermock。模块。testng。PowerMockObjectFactory。org上的newInstance(PowerMockObjectFactory.java:43)。testng。内部的类助手。createInstance1(ClassHelper.java:423)。。。还有21个原因:java。lang.IllegalStateException:无法初始化插件:接口组织。莫基托。插件。org上的MockMaker。莫基托。内部的配置插件。插件加载程序1美元。在com上调用(PluginLoader.java:66)。太阳代理$Proxy19。组织上的isTypeMockable(未知源)。莫基托。内部的util。MockUtil。org上的typeMockabilityOf(MockUtil.java:29)。莫基托。内部的util。MockCreationValidator。org上的validateType(MockCreationValidator.java:22)。莫基托。内部的创造模拟设置简单。在org上验证设置(mocksettingsiml.java:186)。莫基托。内部的创造模拟设置简单。在org上确认(mocksettingsiml.java:180)。莫基托。内部的MockitoCore。org上的mock(MockitoCore.java:62)。莫基托。莫基托。mock(Mockito.java:1729)位于org。莫基托。莫基托。ru上的mock(Mockito.java:1642)。酷一。冒险与模拟。奥赛斯特。ru的initGdx(absest.java:37)。酷一。冒险与模拟。奥赛斯特。(爪哇摘要:30)。。。还有29个原因:java。lang.IllegalStateException:无法加载接口组织。莫基托。插件。在sun中声明的MockMaker实现。杂项。CompoundEnumeration@7dc3712在org。莫基托。内部的配置插件。插件加载程序。loadImpl(PluginLoader.java:101)位于org。莫基托。内部的配置插件。插件加载程序。org上的loadPlugin(PluginLoader.java:45)。莫基托。内部的配置插件。插件注册。(PluginRegistry.java:18)位于org。莫基托。内部的配置插件。插件。(Plugins.java:17)位于org。莫基托。内部的util。MockUtil。(MockUtil.java:24)。。。还有37个原因:java。lang.ClassCastException:无法铸造组织。powermock。应用程序编程接口。莫基托。模仿者。PowerMockMaker到组织。莫基托。插件。java的MockMaker。朗朗,上课。cast(Class.java:3369)位于org。莫基托。内部的配置插件。插件加载程序。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"
...

共有1个答案

丁淇
2023-03-14

我已经修好了。我只是移动initGdx()重载到beforePowerMockTestMethod()之前的或beforePowerMockTestClass()之前的并删除mockito注释初始化,因为它在父类中执行

固定AbsTest类:

abstract public class AbsTest extends PowerMockTestCase {

    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);
    }

    @BeforeMethod
    @Override
    protected void beforePowerMockTestMethod() throws Exception {
        initGdx();
        super.beforePowerMockTestMethod();
    }
}

或使用重载beForePowerMockTestClass方法

abstract public class AbsTest extends PowerMockTestCase {

    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);
    }

    @BeforeClass
    @Override
    protected void beforePowerMockTestClass() throws Exception {
        super.beforePowerMockTestClass();
        initGdx();
    }
}

 类似资料:

相关问答

相关文章

相关阅读