使用JUnit对Webview进行单元测试

时间:2013-02-16 01:16:29

标签: java android testing junit webview

我有一些麻烦让这个单元测试正常工作,我似乎无法弄明白。如果你能帮助我们检查下面的代码和错误,看看它是否对你有意义。我知道这很简单,我似乎无法让它正常工作。

我遇到了问题(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变量切换为正确的类型MockWebViewClient来解决了这个问题。由于MockWebViewClient类包含mError所需的testLoadValidUrl布尔值

1 个答案:

答案 0 :(得分:2)

变量“mError”未在testLoadValidUrl方法中定义,可能是拼写错误。有一个逗号“,”当你可能意味着一个句号“。”成员访问。

即。变化

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

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