我正在试图找出如何让我的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();
}
});
}
答案 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();
}
}
如果上述任何一种情况失败,您可以退出测试。