Вопрос в том, тестируете ли вы модульное тестирование или интеграционное тестирование?
Если вы являетесь модульным тестированием, я бы предложил использовать издевательства старомодным способом, используя сеттер и пытаясь проверить код Java без задействованной инфраструктуры вложения. Это проверит ваш класс изолированно и обойдется много сложнее.
Что я имею в виду:
public class Test{
ClassInTest inTest;
MyInterface myInterface;
@Before
public void setup(){
inTest = new ClassInTest();
//or your favorite mocking frameowrk
myInterface = EasyMock.createMock(MyInterface.class);
inTest.setMyInterface(myInterface);
}
@Test
public void testMethod(){
//...mocking test code
}
}
Конечно, тестирование Android деятельности (и другие расширения Android) трудно из-за исключения бросали окурки и конечные классы/методы. Здесь Robolectric пригодится (и очень рекомендуется) для создания/теневого использования API Android.
Если вы тестируете интеграцию, вы можете захотеть воспользоваться другим подходом. Лично я постараюсь не издеваться над интеграционными тестами, поскольку я пытаюсь протестировать приложение так, как оно будет работать в процессе производства. Но, если вы действительно хотите насмехаться, вы можете использовать аналогичный подход к модульному тестированию и ввести макет после того, как вы встанете на сгенерированный класс активности. Стоит отметить, что вы можете выполнять интеграционные тесты непосредственно на аппаратном обеспечении, используя фреймворки, такие как Robotium.
Подробнее о вашем вопросе, я не знаю о каких-либо средствах AndroidAnnotations специально для инъекций Mocks или введения Mocks в вложенное дерево зависимостей приложения.
Вы хотите проверить свой класс или класс, созданный AndroidAnnotations? –
Я хочу проверить класс, который я пишу. Я хочу вводить mocks в класс, который я пишу для тестового кода, и вводить «реальные» объекты для производства. – apollodude217