我有一個Android儀器測試,用於測試我的ServerApi和多個其他測試設備,我的活動。儀器測試:將測試定義爲以下強制測試
ServerApi測試可能失敗的原因之一是(可惜)是一個壞的無線網絡。在這種情況下,我的整個測試套件需要很長時間才能完成,因爲處理網絡訪問的所有活動都必須在發生故障之前超時。
如何定義ServerApiTest在一開始運行,如果失敗,取消所有其他測試?
public class ServerApiTest extends ApplicationTestCase<Application> {
//...
public ServerApiTest() {
super(Application.class);
}
@Override
public void setUp() throws Exception {
Log.i(TAG, SERVER_KEYWORD + ": prepare");
super.setUp();
_context = getContext();
}
@Override
public void tearDown() throws Exception {
Log.i(TAG, SERVER_KEYWORD + ": cleanUp");
super.tearDown();
}
public void testPing() throws InterruptedException, ExecutionException,
URISyntaxException {
//...
}
作爲一個例子的活性試驗中的一個的摘錄:
@RunWith(AndroidJUnit4.class)
@MediumTest
public class RecordingActivityTest {
private static final String TAG = RecordingActivityTest.class.getSimpleName();
@Rule
public ActivityTestRule<RecordingActivity> _activityRule
= new ActivityTestRule<>(RecordingActivity.class);
@Test
public void testOnCreate() {
onView(withId(R.id.lytRecordingButtons)).check(
matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));
}
//...
有趣的是,我在測試報告人已經觀察到,在某些(稀有和尚待說明)的場合,如果一些測試失敗,測試套件確實似乎中止。
查看屏幕截圖:RecordingActivityTest失敗,測試次數報告爲25.但在測試中沒有任何更改(只修復導致RecordingActivityTest失敗的錯誤),下一個版本再次正確顯示所有43個測試 - 巧合的是現在由於WiFi損壞而導致測試失敗。
首次試運行不指望所有的測試: 下面的測試運行,再次顯示了所有測試:
無論引起了不被執行的測試,我可以利用這一機制爲了我想要達到的目標?
這樣可能會好,但測試報告很難理解,因爲很多測試都失敗了,而且我們必須推斷這些都是基於相同的原因(通過深入研究報告)。如果只有一個測試會失敗並停止執行以下操作,這將立即清除 – PhilLab
@PhilLab在這種情況下可能會有所幫助https://stackoverflow.com/questions/10036894/stopping-junit-suite-if-particular - 試驗 - 失敗。 – fejd