Я запускаю тест на нескольких устройствах одновременно с помощью команды adb test. Мой сценарий псевдо оболочка выглядит следующим образом:Журнал консоли espresso 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, но он требует поиска логарифма для каждого устройства. А также 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
Спасибо за ответ. Я забыл упомянуть, что я знаю, что нужно запускать тесты таким образом, используя задачу градации. Единственная проблема заключается в том, что тесты не запускаются сразу, то есть, строятся градиенты, устанавливают apks, запускают тесты и удаляют apk. Мне нравится команда adb, так как она будет запускать тесты мгновенно. Вы знаете способ пропустить часть сборки и просто запустить тесты с помощью команды gradle connectedCheck? –
Я не знаю, как много Gradle, но попытайтесь найти, какие команды используются 'connectedAndroidTest' или' connectedCheck'. Может быть, './gradlew test' пропустит строительство – piotrek1543