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