2

我试图弄清楚如何让我的 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();
        }
    });
}
4

2 回答 2

1

如果您使用 JUnit 进行集成测试,您可以在方法名称前加上 _1、_2 等:

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

我想您可以调用 System.exit() 而不是抛出异常,但是如果您的测试花费的时间太长,那么这可能是将来添加更多测试的坏兆头(添加更多测试可能会阻止您运行它们)。

如果你使用的是 ant,你可以试试这个:How to make junit testing to stop after first failed test

于 2013-03-18T15:52:38.703 回答
1

我还没有为 Android 应用程序做过 Junit 测试,但根据我对 Web 应用程序的经验,我建议这个答案。

当我遇到这种情况时,我会用返回类型的单独方法调用它们

例子:

public void testCheckFunctions()
{
boolean returnval=false;

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

如果上述任一条件失败,您可以退出测试。

于 2013-03-18T15:56:53.430 回答