У меня есть инструментальный тест Android с использованием Зубочистка DI :
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
private static final String LOG_TAG = ExampleInstrumentedTest.class.getName();
@Inject
Context mContext;
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertThat(appContext.getPackageName(), startsWith("com.honeybeeapp.toothpicktest.mytoothpickapplication"));
final SimpleApp application = (SimpleApp) appContext.getApplicationContext();
Scope scope = Toothpick.openScopes(application, this);
Module module = new Module();
module.bind(Context.class).toInstance(application);
scope.installTestModules(module);
Toothpick.inject(this, scope);
assertTrue(mContext != null); // FAILS :(
Log.d(LOG_TAG, "Injected");
}
}
( Файл в Полный репо ).
Остальная часть приложения работает, и инъекция в мою активность, службы и фрагменты работает нормально.
Когда я вызываю Toothpick.inject(otherThing, scope);
для экземпляра другого класса в инструментальном тесте, эта инъекция работает нормально.
Я подозреваю, что класс Tests (или приложение?) Непо какой-то причине правильно найти декорированных @Inject
членов.
Я попробовал scope.installModules(module);
, и это тоже не работает.
Некоторые фрагменты моего файла gradle:
android {
compileSdkVersion 27
flavorDimensions "default"
defaultConfig {
applicationId "com.honeybeeapp.toothpicktest.mytoothpickapplication"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments = [
'toothpick_registry_package_name': 'com.honeybeeapp.toothpicktest.mytoothpickapplication',
]
}
}
}
snip...
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.android.support:support-v4:27.1.1'
compile 'com.github.stephanenicolas.toothpick:toothpick-runtime:1.1.3'
compile 'com.github.stephanenicolas.toothpick:smoothie:1.1.3'
annotationProcessor 'com.github.stephanenicolas.toothpick:toothpick-compiler:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
testCompile 'com.github.stephanenicolas.toothpick:toothpick-testing:1.1.3'
}
Полный Gradle Файл .