Android эспрессо-кинжал тестирует.Насмешка в инжекторе конструктора - PullRequest
0 голосов

У меня есть активность и введенный ведущий через инжектор конструктора. Как то так

public class RegistrationActivity extends AppCompatActivity {

    @Inject
    RegistrationPresenter registrationPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    SampleApplication.instance.getApplicationComponent().inject(this);
}


public class RegistrationPresenter {
    @Inject
    public RegistrationPresenter{
    } 
}

Я пытаюсь издеваться над докладчиком и вставлять его в упражнение. Но это работает, только если в модуле предусмотрен ведущий. Как я могу издеваться и вводить моего докладчика? Спасибо

1 Ответ

0 голосов
/ 06 мая 2019

Это возможно начиная с Android 9, проверить эту статью

В старых версиях вам нужно создать отдельный компонент для теста.

class TestApplication : MyApplication() {
    override val component: TestComponent by lazy {
        DaggerTestComponent.builder().applicationModule(ApplicationModule(this)).build()
    }
}

Пользовательский бегун:

class TestRunner : AndroidJUnitRunner() {
    @Throws(InstantiationException::class, IllegalAccessException::class, ClassNotFoundException::class)
    override fun newApplication(cl: ClassLoader, className: String, context: Context): Application {
        return super.newApplication(cl, TestApplication::class.java.name, context)
    }
}

и регистрация бегуна в файле build.gradle:

 defaultConfig {
        testInstrumentationRunner "com.package.TestRunner"
    }

В TestComponent теперь вы можете присоединить модуль с тестовой реализацией RegistrationPresenter

...