3

WebViewRobolectric を使用していくつかのコンテンツをテストしようとしていますが、データが入ってきません。

で以前loadUrl()に次のことを呼び出しましたWebView

Robolectric.getFakeHttpLayer().interceptHttpRequests(false);
Robolectric.getFakeHttpLayer().interceptResponseContent(true);

また、Robolectric-land でキューに入れられているものをすべてフラッシュするために、以下を呼び出しました。他のいくつかのことを成功させるために、これを行う必要があります。

Robolectric.runBackgroundTasks();
Robolectric.runUiThreadTasks();
Robolectric.runUiThreadTasksIncludingDelayedTasks();

URLをロードするコードは次のとおりです

    WebView webView = new WebView(this);

    webView.getSettings().setUseWideViewPort(false);
    webView.getSettings().setSupportMultipleWindows(false);
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setAppCacheEnabled(false);
    webView.getSettings().setDomStorageEnabled(false);
    webView.getSettings().setLoadWithOverviewMode(true);

    webView.setInitialScale(1);

    webView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int newProgress) {
           super.onProgressChanged(view, newProgress);

           Log.d(TAG, newProgress + " URL: " + view.getUrl());//this never happens!
        }
    });

    webView.loadUrl("https://the-url.to/load");

    Log.d(TAG, "Loading: " + url);//i see this..

私は Robolectric とそれがエミュレーターのオーバーヘッドの問題をどのように解決するかを本当に気に入っていますが、上記の WebView 実装と連携する必要があります。何か案は?

4

1 に答える 1

2

何をテストしますか?loadurl が予想される URL で呼び出されたことを確認するだけで十分かもしれません。

これ以上は現在不可能のようです。 https://github.com/robolectric/robolectric/blob/8c85d5ba50b1e06fd2918d48ad6c6487e8340750/robolectric/src/main/java/org/robolectric/shadows/ShadowWebView.java

于 2014-11-19T06:31:19.843 に答える