Мені доводиться використовувати інструмент тестування автоматизованого інтерфейсу, і я переплутався між використанням програми Robotium vs Google Espresso.
Які основні відмінності між ними? Чи є функції, які існують в одній, а не в іншій?
Мені доводиться використовувати інструмент тестування автоматизованого інтерфейсу, і я переплутався між використанням програми Robotium vs Google Espresso.
Які основні відмінності між ними? Чи є функції, які існують в одній, а не в іншій?
Відповіді:
Повне розкриття: Я один з авторів Еспресо.
І Espresso, і Robotium - це основи, що ґрунтуються на приладобудуванні, тобто вони використовують Android Instrumentation для перевірки та взаємодії з тестуваними заходами .
У Google ми почали користуватися Robotium, оскільки це було зручніше, ніж інструментарій для запасів (капелюхи для розробників Robotium, щоб зробити це так). Однак це не задовольнило нашу потребу в рамках, яка спростила написання надійних тестів для розробників.
Основні досягнення в Еспресо над Роботієм:
Синхронізація. За замовчуванням логіка тестування приладів працює на іншому потоці (приладобудування), ніж операції з користувальницьким інтерфейсом (обробляються на потоці інтерфейсу користувача). Без синхронізації тестових операцій з оновленнями інтерфейсу, тести будуть схильні до в’ялості - тобто вийдуть випадковим чином із-за проблем із тимчасовим інтервалом. Більшість авторів тесту ігнорує цей факт, деякі додають механізми сну / повторного спроби та ще менше реалізують більш досконалий код безпеки потоку. Жодне з них не є ідеальним. Espresso піклується про безпеку ниток, безперешкодно синхронізуючи тестові дії та твердження з інтерфейсом користувальницької програми тестованої програми. Робоцій намагається вирішити це за допомогою механізмів сну / повтору, які не тільки є ненадійними, але й призводять до того, що тести працюватимуть повільніше, ніж потрібно.
API. Еспресо має невеликий, чітко визначений та передбачуваний API, який відкритий для налаштування. Ви розповідаєте рамці, як знайти елемент інтерфейсу, використовуючи стандартні відповідники hamcrest, а потім доручаєте йому виконати дію або перевірити твердження на цільовому елементі. Можна порівняти це з API Robotium, де очікується, що автор тесту вибере один із 30 клацань методів. Крім того, Robotium розкриває такі небезпечні методи, як getCurrentActivity (що все-таки означає поточний?) Та getView, які дозволяють оперувати об'єктами за межами основної нитки (див. Пункт вище).
Очистити інформацію про помилку. Espresso прагне надати багату інформацію про налагодження, коли трапляється збій. Крім того, ви можете налаштувати спосіб усунення несправностей Espresso за допомогою власного обробника несправностей. Я не пробував це деякий час, але попередні версії Robotium страждали від непослідовної обробки несправностей (наприклад, метод clickOnView може поглинути SecurityExceptions).
На відміну від попередньої відповіді, Espresso підтримується у всіх версіях API із значною кількістю користувачів (див. Http://developer.android.com/about/dashboards/index.html ). Він працює на деяких старих версіях, але тестування на них буде марною витратою ресурсів. Якщо говорити про тестування ... Еспресо перевіряється на кожну зміну за допомогою всебічного тестового набору (з покриттям понад 95%), а також більшості програм для Android, розроблених Google.
Еспресо набагато швидше, ніж Robotium, але працює лише на деяких версіях SDK.
Тож якщо ви хочете тест, який працює на всіх пристроях, перейдіть на Roboitum. Якщо ні, вирушайте на еспресо, і не забувайте, що ви будете бета-тестером ще деякий час.