gpt4 book ai didi

android - 尝试模拟 AdView 类时出现 VirtualMachine 错误

转载 作者:太空狗 更新时间:2023-10-29 14:15:05 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我想测试一些配置然后加载我的广告的 Activity 方法。

我在我的 MainActivity 上使用 ActivityInstrumentationTestCase2

为了避免在测试期间加载真实的广告,我想模拟这两个类然后验证它们。

import com.google.ads.AdRequest;
import com.google.ads.AdView;

我正在使用 mockito、dexmaker 和 dexmaker-mockito。一切正常,我还使用 Emma 跟踪代码覆盖率。

然而,在某些版本的 Android 上似乎无法模拟这些类,因为 AdView 扩展了 RelativeLayout 并且它有一些 DexMaker 无法处理的 final方法。

这会在测试期间产生此跟踪:

     [exec] Error in testAdWithLocation:
[exec] java.lang.VirtualMachineError
[exec] at dalvik.system.DexFile.defineClass(Native Method)
[exec] at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:207)
[exec] at dalvik.system.DexFile.loadClass(DexFile.java:196)
[exec] at dalvik.system.DexClassLoader.findClass(DexClassLoader.java:226)
[exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
[exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
[exec] at com.google.dexmaker.stock.ProxyBuilder.loadClass(ProxyBuilder.java:272)
[exec] at com.google.dexmaker.stock.ProxyBuilder.buildProxyClass(ProxyBuilder.java:254)
[exec] at com.google.dexmaker.mockito.DexmakerMockMaker.createMock(DexmakerMockMaker.java:56)
[exec] at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)
[exec] at org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)
[exec] at org.mockito.Mockito.mock(Mockito.java:1243)
[exec] at org.mockito.Mockito.mock(Mockito.java:1120)
[exec] at net.mackenzie_serres.meteowidget.ui.activities.MainActivityTests.testAdWithLocation(MainActivityTests.java:430)
[exec] at java.lang.reflect.Method.invokeNative(Native Method)
[exec] at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:204)
[exec] at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:194)
[exec] at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:186)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
[exec] at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
[exec] at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)

为了避免这种情况,我能够模拟 AdRequest 并使用真正的 AdView,但我怀疑这是我被 Google 列入黑名单并且我的广告帐户被卡住的原因。

关于如何能够将其测试回 API 9,但又不被列入黑名单,有什么想法吗?

谢谢

最佳答案

在 Admob 库上创建一个薄抽象层并模拟该抽象。

这可能意味着您将无法直接将 AdView 放入您的 Fragment/Activity 布局中。

关于android - 尝试模拟 AdView 类时出现 VirtualMachine 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029992/

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