我想弄清楚如何让我的JUnits测试运行特定的顺序以及停止所有的测试,如果其中一个测试的失败。下面我介绍了一些简单的操作栏项目测试。所有我基本上想确保当我通过命令行运行我的构建/测试时,如果其中一个测试失败,我希望测试停止。任何建议?停止测试,如果JUnit测试失败
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();
}
});
}
你打破了Junit的基本原则之一 - 所有的测试都应该是相互独立的。一个好的测试类应该有可以以任何顺序执行的测试,并且它们之间没有依赖关系。 – planetjones 2013-03-18 15:53:26
也见http://stackoverflow.com/questions/3693626/how-to-run-test-methods-in-spec-order-in-junit4 – planetjones 2013-03-18 15:55:06
有一个[非常漂亮的例子来自IBM DeveloperWorks](https:/ /www.ibm.com/developerworks/mydeveloperworks/blogs/amcohen/entry/stop_junit_before_you_get_into_trouble3?lang=en)使用自定义套件来完成此操作。你也可以用Ant来运行你的测试,Ant在Junit任务上有一个属性,可以让你在失败时停下来。 – Perception 2013-03-18 15:56:18