android–Instrumentation测试WebView

android–Instrumentation测试WebView,第1张

概述我希望在InstrumentationTest中构建一个自定义WebView,然后检查是否已完成正确的初始化.我的自定义WebView:publicclassInteractiveWebViewextendsWebView{publicInteractiveWebView(finalContextcontext){super(context);initialise(contex

我希望在InstrumentationTest中构建一个自定义WebVIEw,然后检查是否已完成正确的初始化.

我的自定义WebVIEw:

public class InteractiveWebVIEw extends WebVIEw{    public InteractiveWebVIEw(final Context context)    {        super(context);        initialise(context);    }    public InteractiveWebVIEw(final Context context, final AttributeSet attrs)    {        super(context, attrs);        initialise(context);    }    public InteractiveWebVIEw(final Context context, final AttributeSet attrs, final int defStyleAttr)    {        super(context, attrs, defStyleAttr);        initialise(context);    }    private voID initialise(final Context context)    {        if (!isInEditMode())        {            if (Build.VERSION.SDK_INT >= 19)            {                setLayerType(VIEw.LAYER_TYPE_HARDWARE, null);            }            else            {                setLayerType(VIEw.LAYER_TYPE_SOFTWARE, null);            }            setScrollbarStyle(WebVIEw.SCRolLbarS_INSIDE_OVERLAY);            setFocusable(true);            setFocusableIntouchMode(true);            requestFocus(VIEw.FOCUS_DOWN);            WebSettings settings = getSettings();            settings.setJavaScriptEnabled(true);            settings.setCacheMode(WebSettings.LOAD_NO_CACHE);            settings.setSupportMultiplewindows(false);            settings.setDomStorageEnabled(true);            settings.setDatabaseEnabled(true);            settings.setSupportZoom(false);            settings.setUseWIDeVIEwPort(false);            String databasePath = context.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();            settings.setDatabasePath(databasePath);        }    }}

InstrumentationTest:

@RunWith(AndroIDJUnit4.class)@SmallTestpublic class InteractiveWebVIEwTest{    @Test    public voID constructors()    {        Context baseContext = InstrumentationRegistry.getContext();        InteractiveWebVIEw webVIEw1 = new InteractiveWebVIEw(baseContext);        InteractiveWebVIEw webVIEw2 = new InteractiveWebVIEw(baseContext, null);        InteractiveWebVIEw webVIEw3 = new InteractiveWebVIEw(baseContext, null, 1);    }}

正如你所看到的,我现在还没有断言任何东西.

我面临的问题是,当我调用第一个WebVIEw构造函数时,我收到以下错误:

java.lang.NullPointerException: Attempt to read from fIEld 'androID.os.MessageQueue androID.os.Looper.mQueue' on a null object referenceat androID.os.Handler.<init>(Handler.java:229)at androID.os.Handler.<init>(Handler.java:137)at org.chromium.base.ThreadUtils.setUiThread(ThreadUtils.java:39)at com.androID.webvIEw.chromium.WebVIEwChromiumFactoryProvIDer.ensureChromiumStartedLocked(WebVIEwChromiumFactoryProvIDer.java:197)at com.androID.webvIEw.chromium.WebVIEwChromiumFactoryProvIDer.startYourEngines(WebVIEwChromiumFactoryProvIDer.java:294)at com.androID.webvIEw.chromium.WebVIEwChromium.init(WebVIEwChromium.java:218)at androID.webkit.WebVIEw.<init>(WebVIEw.java:606)at androID.webkit.WebVIEw.<init>(WebVIEw.java:542)at androID.webkit.WebVIEw.<init>(WebVIEw.java:525)at androID.webkit.WebVIEw.<init>(WebVIEw.java:512)at androID.webkit.WebVIEw.<init>(WebVIEw.java:502)at androID.mobileconnect.gsma.com.library.vIEw.InteractiveWebVIEw.<init>(InteractiveWebVIEw.java:17)

当我点击第17行的InteractiveWebVIEw链接时,它会转到该类中的构造函数并指向super(context);呼叫.

我已经尝试了许多其他方法,例如将InstrumentationTest扩展为ActivityInstrumentationTestCase2类型,以防它的上下文出现为null但我仍然得到相同的错误.我已经多次搜索过这个问题,但似乎无法根据我发现的问题解决问题.

我出错的任何想法?

解决方法:

通过模拟InteractiveWebVIEw解决了这个问题,但确保它是在主UI线程上运行的Runnable中构建的:

getActivity().runOnUiThread(new Runnable(){    @OverrIDe    public voID run()    {        // Given        InteractiveWebVIEw interactiveWebVIEw = new InteractiveWebVIEw(getActivity());        ....        ....        ....        ....    }}
总结

以上是内存溢出为你收集整理的android – Instrumentation测试WebView全部内容,希望文章能够帮你解决android – Instrumentation测试WebView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117331.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存