2016-06-30 3 views
0

Я использую Dagger 2 и пытаюсь обеспечить различные зависимости во время тестирования.Использование различных тестовых направляющих для разных тестов

Я могу предоставить различные зависимости для тестов, но, к сожалению, они применяются ко всем тестам в каталоге androidTest.

Я делаю это, указав TestAppComponent, который использует TestAppModule. В моем TestApplication, который расширяет мои AndroidApplication, я поставляю TestAppComponent, а не реальный AppComponent. Тогда я TestRunner, расширяющий метод newApplication следующим образом:

@Override 
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
    return super.newApplication(cl, TestApplication.class.getName(), context); 
} 

Затем использовать эту бегун я заменить текущий бегун со следующим:

testInstrumentationRunner "com.company.myapp.TestRunner" 

Моим вопросом

Как Я использую другой компонент/приложение/тестовый бегун для разных тестов, вместо того, чтобы использовать их для каждого из них? Возможно, я хочу издеваться над зависимостью в одном тесте, но не в другом?

ответ

0

Я нашел решение этого вопроса в блоге. Он обходит создание пользовательского бегуна и вместо этого использует Rule для установки другого компонента в загруженном Application. Это означает, что вы можете поставлять разные компоненты для каждого тестового класса, что я хотел сделать.

Сообщение в блоге Ribot Labs опубликовано here

Смежные вопросы