Я написал пользовательский номер TestRule
для использования с моим набором тестов для Android. Он заполняет таблицу в базе данных, используемой тестируемым приложением. Теперь мне нужно использовать это DataRule
вместе с ActivityTestRule
. Могу ли я иметь два поля моего тестового класса, аннотированный с @Rule
? Как я могу контролировать порядок применения правил?Использование нескольких тестов в одном тесте
фон:
Андроида API предоставляет TestRule для начала деятельности, которая является основным классом для каждого приложения с пользовательским интерфейсом. У моего приложения есть база данных, и у меня есть несколько тестов, которые требуют, чтобы база данных была предварительно заполнена некоторыми известными данными. Раньше, используя тесты на основе JUnit3, я использовал абстрактный суперкласс для централизации кода, который подготавливает базу данных, а затем я расширил этот суперкласс для разных тестовых случаев. Теперь я пытаюсь реализовать ту же логику с помощью JUnit 4. Недавно я узнал, что тестовые правила - один из способов предоставить логику, которая повторно используется в тестах, поэтому я пытаюсь переместить логику из моего суперкласса в тестовое правило. Является ли это подходящим способом для достижения моей цели?
Спасибо. Это то, что я ищу! –
«Я не уверен, что является стандартным заказом приложения правила, или если он даже четко определен». У меня есть гипотеза о том, что упорядочение определяется порядком декларации внутри класса. Я еще не проверил это. –
@ Code-Apprentice, который может быть. Я просто не уверен, что JLS или JDK предоставляют гарантию того, какие поля заказа возвращаются с рефлексивного вызова по сравнению с порядком, который они объявили в источнике. Я определенно не хотел бы зависеть от этого, чтобы тестирование работало. – sisyphus