java - 使用 JUnit 对 Webview 进行单元测试

标签 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 类包含我在 testLoadValidUrl

中需要的 mError boolean 值

最佳答案

您的 testLoadValidUrl 方法中 undefined variable “mError”,可能是拼写错误。当您可能指的是句点“”时,有一个逗号“,”。供成员(member)访问。

即改变

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

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

关于java - 使用 JUnit 对 Webview 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905882/

相关文章:

java - 如何在android中使用SmsManager将图像文件附加到短信?

java - drawable 不是可序列化的异常

eclipse - 如何测试 Eclipse Juno RCP 的 UI

testing - 你会如何测试鼠标?描述尽可能多的测试用例?

java - JUnit 测试创建相同的数组而不是随机数组

java - Apache 弗林克 : Correctly make async webservice calls within MapReduce()

java - 为什么JLS声明最大的int字面量是2147483648?

java - 为什么允许使用子类的构造函数实例化父类对象?

java - 在使用 spring applicationContext 的接口(interface)实现之间进行选择?

android - 为什么在用Cordova构建APK时出现此错误?