我试图弄清楚我如何才能让我的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();
}
});
}
3条答案
按热度按时间kmynzznz1#
如果你正在使用JUnit进行集成测试,你可以在方法名前面加上_1、_2等前缀:
我想你可以调用System.exit()而不是抛出异常,但是如果你的测试花费了太长的时间,这可能是一个不好的信号,在未来添加更多的测试(添加更多的测试可能会阻止你运行它们)。
如果你正在使用Ant,你可以试试这个:How to make junit testing to stop after first failing test
drkbr07n2#
我还没有做过Android应用程序的Junit测试,但根据我对Web应用程序的经验,我建议这个答案。
当我遇到这种情况时,我会在单独的方法中调用它们,并返回类型
示例:
如果上述任何条件失败,则可以退出测试。
q0qdq0h23#
可以使用@MethodOrder更改jUnit 5中的测试顺序
如果你想有一个特定的顺序,你应该注解你的类使用OrderAnnotion
如果你想让一个测试在vanilla junit中连续的测试失败,你可以这样做:
这将始终导致:
但是,很明显,这种设置存在一些问题:
1.在jUnit中更改你不想做的命令
1.您可以为每个类而不是每个测试方法创建一个示例
1.因为你必须翻转previousTestFailed布尔值,并且你必须在每个测试中添加假设(除了第一个),所以它确实带有样板。
您可能希望查看更多特定于E2 E的测试框架或jUnit插件。