如果JUnit测试失败,则停止测试

时间:2013-03-18 15:48:31

标签: java android unit-testing junit android-webview

我正在试图找出如何让我的JUnits测试运行特定的顺序,以及如果其中一个测试失败则停止所有测试。在下面我只包含了一些简单的操作栏项目测试。所有我基本上都想确保当我通过命令行运行我的构建/测试时,我希望测试在其中一个测试失败时停止。任何建议书?

public void testPreconditions() {
    assertNotNull(instrumentation);
    assertNotNull(mWeb);
    assertNotNull(mActivity);
}

protected void setUp() throws Exception {
    super.setUp();

    instrumentation = getInstrumentation();
    mActivity = getActivity();
    setActivityInitialTouchMode(false);
    mWeb = (WebView) mActivity
            .findViewById(com.jaisonbrooks.webview.R.id.webview_main);
    mMockWebViewClient = new MockWebViewClient();
    mWeb.setWebViewClient(mMockWebViewClient);
    mSettings = mWeb.getSettings();
}

public void testThatButtonReloadWorks() {
    final View view = mActivity
            .findViewById(com.jaisonbrooks.webview.R.id.menu_refresh);
    mActivity.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            view.requestFocus();
            view.callOnClick();
        }
    });
}

public void testThatButtonForwardWorks() {
    final View view = mActivity
            .findViewById(com.jaisonbrooks.webview.R.id.menu_forward);
    mActivity.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            view.requestFocus();
            view.callOnClick();
        }
    });
}

public void testThatButtonBackWorks() {
    final View view = mActivity
            .findViewById(com.jaisonbrooks.webview.R.id.menu_back);
    mActivity.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            view.requestFocus();
            view.callOnClick();
        }
    });
}

2 个答案:

答案 0 :(得分:1)

如果您正在使用JUnit进行集成测试,则可以使用_1,_2等为方法名称添加前缀:

public void _1_testThatButton()...
public void _2_testSomethingSecond()...

我想你可以调用System.exit()而不是抛出异常,但是如果你的测试耗时太长,那么将来添加更多测试可能是一个不好的迹象(添加更多测试可能会阻止你运行它们)。

如果您使用的是蚂蚁,可以试一试:How to make junit testing to stop after first failing test

答案 1 :(得分:1)

我还没有针对Android应用程序进行过Junit测试,但根据我在网络应用程序方面的经验,我建议给出这个答案。

当我遇到这种情况时,我会用返回类型

的单独方法调用它们

示例:

public void testCheckFunctions()
{
boolean returnval=false;

returnval=test1();
if(returnval)
{
returnval=test2();
}
if(returnval)
{
returnval=test3();
}
}

如果上述任何一种情况失败,您可以退出测试。