2

この単体テストを適切に機能させるのに問題があり、それを理解できないようです。以下のコードとエラーを確認して、それがあなたにとって意味があるかどうかを確認してください。これは簡単なことだとわかっていますが、正しく動作させることができないようです。

問題があります (mError は変数に解決できません)。私は何を間違っていますか、MockWebViewClient クラスで変数を作成しました。これで、mError が使用されているコード行をコメントアウトしても、テストを実行できるようになりました。

ただし、テストを実行すると、次のコード行で「junit.framework.AssertionFailedError」が発生します

assertTrue(!(mWeb.getProgress() < 100));

前もって感謝します。

WebviewTest.java

private static final String VALID_URL = "http://www.google.com";
private static final String INVALID_URL = "http://invalid.url.doesnotexist987.com";
private static final long TIMEOUT = 5000; 
private Enlighten_Webview_Main mActivity;
private WebView mWeb;
private WebViewClient mMockWebViewClient;

// Rest of my code....

public final void testLoadValidUrl() {
        assertLoadUrl(VALID_URL);
        assertFalse(mMockWebViewClient, mError);
    }

    public final void testLoadInvalidUrl() {
        assertLoadUrl(INVALID_URL);
        assertTrue(mMockWebViewClient.mError);
    }

    private void assertLoadUrl(String url) {
        mWeb.loadUrl(url);
        sleep();

            //Added to hopefully let webview load all the way
        getInstrumentation().waitForIdleSync();

        assertTrue(!(mWeb.getProgress() < 100));            
    }

    private void sleep() {
        try {
            Thread.sleep(TIMEOUT);
        } catch (InterruptedException e) {
            fail("Unexpected timeout");
        }
    }
    public class MockWebViewClient extends WebViewClient {
        boolean mError;

        @Override
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {
            mError = true;
        }
    }

編集

mMockWebViewClient変数を正しいタイプに切り替えることで問題を修正しましたMockWebViewClientMockWebViewClientクラスにはmError必要なブール値が含まれているためtestLoadValidUrl

4

1 に答える 1

2

変数「mError」はtestLoadValidUrlメソッドで定義されていません。おそらくタイプミスです。おそらくピリオド「。」を意味する場合は、コンマ「、」があります。メンバーアクセス用。

つまり、変更します

public final void testLoadValidUrl() {
    assertLoadUrl(VALID_URL);
    assertFalse(mMockWebViewClient, mError);
}

public final void testLoadValidUrl() {
    assertLoadUrl(VALID_URL);
    assertFalse(mMockWebViewClient.mError);
}
于 2013-02-16T01:20:17.333 に答える