我正在使用adb測試命令一次在多個設備上運行測試。我的僞外殼腳本如下所示:Android咖啡控制檯日誌Build.Serial onFail
for each device
adb -s ${device} shell am instrument -w -e ${classOrPkg} ${androidTestPackage}${test_name} ${main_package}.${flavor}.test/android.support.test.runner.AndroidJUnitRunner &
問題是當測試失敗時,我沒有關於發生故障的設備的信息。我可以使用LogCat,但它需要爲每個設備查找logcat。而且,System.out.println()不起作用。
我想,現在一個可能的解決方案是通過擴展TestWatcher類並覆蓋這樣的失敗()方法,
public class TestWatcherRule extends TestWatcher {
@Override
protected void failed(Throwable e, Description description) {
Description d = Description.createTestDescription(e.getClass(), "<<<< Failed on Device: " + Build.SERIAL);
super.failed(e, d);
}
}
實現:
@Rule
public TestWatcher testWatcher = new TestWatcherRule();
assertThat("My message", true, is(false));
我不能讓設備序列尚未在終端上。
我的預期產出將是這樣的:
com.myapp.mobile.tests.BenefitCardDBTest:
Error in addDeleteCard(com.myapp.mobile.tests.BenefitCardDBTest):
**<<<< Failed on Device: HTC10xwrtxe**
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.myapp.mobile.qa:id/drawer_layout
謝謝你的答覆。我忘記提及,我知道通過使用gradle任務以這種方式運行測試。唯一的問題是測試不能立即運行,即gradle builds,安裝apks,運行測試並卸載apk。我喜歡adb命令,因爲它會立即運行測試。你知道一種跳過構建部分的方法,只需使用gradle connectedCheck命令運行測試? –
我不太瞭解Gradle,但是嘗試使用找到哪些命令是「connectedAndroidTest」或「connectedCheck」。也許'./gradlew test'會跳過建設 – piotrek1543