Android TestRunner由于IllegalState异常而失败

16

我正在运行Android Instrumentation测试,对活动进行单元测试,特别是检查WebView是否已加载的代码如下,但每次都会出现异常:

正在运行测试,测试运行开始,测试未能完成运行。原因:由于“java.lang.IllegalStateException”,仪器运行失败。请检查设备logcat以获取详细信息。测试运行失败:仪器运行失败,原因为“java.lang.IllegalStateException”。

没有Logcat日志,只有这条消息在控制台中,尝试在Genymotion和设备上运行,两者都是Android 5.0。

代码如下:

public class WebViewActivityTest extends ActivityInstrumentationTestCase2 <WebViewActivity> {

    WebView webView;
    WebViewActivity testActivity;

    public WebViewActivityTest()
    {
        super(WebViewActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        testActivity = getActivity();

    }

    public void testWebView()
    {
        webView = (WebView)testActivity.findViewById(R.id.webView);
        assertNotNull(webView);
    }

    public void testPreconditions() {

        assertNotNull("Webview activity is null",testActivity);
    }
}

我已经尝试搜索,但仍不知道为什么会发生这个异常,请帮忙。


非常感谢提供完整的堆栈跟踪信息。 - Johnco
@Johnco,我在逻辑上什么也没有得到,只是在控制台上看到了这个异常。 - vishal dharankar
异常的消息是什么? - suiwenfeng
@TankSui 在 logcat 中没有出现异常堆栈跟踪,我只能在控制台中得到消息,而且链接指向的是不同的情况,我已经检查了所有这些。 - vishal dharankar
1个回答

1
在try语句后添加一个catch语句,并给try语句添加一个异常。语法可能有些错误,但这应该可以解决你的问题。
public class WebViewActivityTest extends ActivityInstrumentationTestCase2 <WebViewActivity> {

WebView webView;
WebViewActivity testActivity;

public WebViewActivityTest()
{
    super(WebViewActivity.class);
}

@Override
protected void setUp() throws(exeption e) {
    super.setUp();
    testActivity = getActivity();
    catch(exeption e)
    System.out.println("Nope!);

}

public void testWebView()
{
    webView = (WebView)testActivity.findViewById(R.id.webView);
    assertNotNull(webView);
}

public void testPreconditions() {

    assertNotNull("Webview activity is null",testActivity);
}

}


明确定义try/catch块语句。 - Jose Rodriguez
你需要决定使用 throws 还是 try 作为你的异常检查器。 - eyalp55
为解决您的问题,您需要一个异常处理程序并在代码中实现它。关于异常及其处理的更多信息,请参阅此链接:https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html - eyalp55
@eyalp55请考虑阅读我的问题评论,我说我在异常堆栈中没有得到任何细节,这与异常处理无关。 - vishal dharankar
我的意思是你需要添加一个异常处理程序或类似的东西来打印出导致你收到错误消息的原因。 - eyalp55

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接