我想弄清楚如何讓我的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