Woj*_*hKo 1 android annotation-processing robolectric dagger
如何制作apt流程测试源文件?
当我有以下设置时,我得到异常:
java.lang.IllegalStateException: Module adapter for class info.korzeniowski.walletplus.test.module.TestDatabaseModule could not be loaded. Please ensure that code generation was run for this module.
并且TestDatabaseModule$$ModuleAdapter在DatabaseModule$$ModuleAdapter正确生成时不生成类.
我在这做错了什么?
apt {
arguments {
androidManifestFile variant.processResources.manifestFile
resourcePackageName 'info.korzeniowski.walletplus'
}
}
dependencies {
// Dagger
def daggerVersion = '1.2.+'
apt "com.squareup.dagger:dagger-compiler:$daggerVersion"
compile "com.squareup.dagger:dagger:$daggerVersion"
}
Run Code Online (Sandbox Code Playgroud)
package info.korzeniowski.walletplus.module;
@Module(
...
)
public class DatabaseModule {
private DatabaseHelper databaseHelper;
public DatabaseModule(WalletPlus application) {
databaseHelper = OpenHelperManager.getHelper(application, DatabaseHelper.class);
}
@Provides
@Singleton
public DatabaseHelper provideDatabaseHelper() {
return databaseHelper;
}
...
}
Run Code Online (Sandbox Code Playgroud)
package info.korzeniowski.walletplus.test.module;
@Module(
...
includes = DatabaseModule.class,
overrides = true
)
public class TestDatabaseModule {
@Provides
@Singleton
public DatabaseHelper provideTestDatabaseHelper() {
return new DatabaseHelper(Robolectric.application, null);
}
}
Run Code Online (Sandbox Code Playgroud)
@Before
public void setUp() {
List<Object> modules = new ArrayList<Object>();
modules.add(new DatabaseModule((WalletPlus) Robolectric.application));
modules.add(new TestDatabaseModule());
ObjectGraph.create(modules.toArray()).inject(this);
}
Run Code Online (Sandbox Code Playgroud)
该apt配置仅适用的主要来源.您还必须声明注释处理器为测试源运行,因为它是一个单独的调用javac.
您可以使用类似的语法执行此操作:
androidTestApt "com.squareup.dagger:dagger-compiler:$daggerVersion"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |