我有一个活动,并通过构造函数注入注入了presenter。像这样的东西
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{
}
}
我正在尝试模拟演示者并将其注入活动中。但只有在模块中提供了演示者时才有效。我怎么能模仿并注入我的演示者? 感谢
答案 0 :(得分:0)
自Android 9起可以使用 check this article
在旧版本中,您需要创建单独的组件进行测试。
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
相连