Daggerが/testクラス用のコンポーネントを生成しない
質問
こちらのガイドに従っています。 https://github.com/ecgreb/dagger-2-testing-demo
私はapp/src/mainに以下のような設定をしています(インジェクションと@Providesのコードは省略しています)。
public class FlingyApplication extends Application {
@Singleton
@Component(modules = { FlingyModule.class })
public interface FlingyComponent
}
@Module
public class FlingyModule
app/src/testにあります。
public class TestFlingyApplication extends Application {
@Singleton
@Component(modules = { TestFlingyModule.class })
public interface TestFlingyComponent extends FlingyComponent
}
@Module
public class TestFlingyModule
ここまでは、githubの例とほぼ同じです。daggerがsrc/mainにあるComponentビルダーのコードを生成しようとすると、きちんと生成されます。しかし、Daggerはsrc/testにあるComponentビルダーのコードを生成しません。
私のメインのbuild.gradleです。
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-alpha3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.5.1'
}
私のアプリ/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
android {
# There is obviously more in here, but this is the custom part:
packagingOptions {
exclude 'META-INF/services/javax.annotation.processing.Processor'
}
}
dependencies {
compile 'com.squareup:otto:1.3.8'
compile 'com.android.support:cardview-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.google.dagger:dagger:2.0.1'
apt 'com.google.dagger:dagger-compiler:2.0.1'
compile 'javax.annotation:javax.annotation-api:1.2'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'io.reactivex:rxjava:1.1.0'
testCompile 'com.neenbedankt.gradle.plugins:android-apt:1.4'
testCompile 'junit:junit:4.12'
testCompile 'org.robolectric:robolectric:3.0'
testCompile 'org.mockito:mockito-core:1.10.19'
}
で、ビルドすると
DaggerFlingyApplication_FlingyComponent
クラスは得られますが
DaggerTestFlingyApplication_TestFlingyComponent
私が気づいた面白いことは、行を入れ替えると
apt 'com.google.dagger:dagger-compiler:2.0.1'
# TO
compile 'com.google.dagger:dagger-compiler:2.0.1'
を実行すると、次のようになります。
./gradlew compileDebugUnitTestSources
:
:app:compileDebugJavaWithJavac
Note: /app/build/generated/source/apt/debug/com/jy/flingy/DaggerFlingyApplication_FlingyComponent.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:app:preDebugUnitTestBuild UP-TO-DATE
:app:prepareDebugUnitTestDependencies
:app:compileDebugUnitTestJavaWithJavac
Note: /app/build/intermediates/classes/test/debug/com/jy/flingy/DaggerTestFlingyApplication_TestFlingyComponent.java uses unchecked or unsafe operations.
なぜ中間までビルドされるのかがわからず、build.gradleファイルを想定して
apt
の代わりに
compile
の代わりに、
どのように解決するのですか?
以下のように
build.gradle
ファイルに追加する必要があります。
androidTestApt 'com.google.dagger:dagger-compiler:<version>'
またはJUnitのテスト用。
testApt 'com.google.dagger:dagger-compiler:<version>'
これは、テストコンポーネント用のDaggerコードを生成するために必要です。
EDIT :
もし、あなたが
jack
ツールチェインを使用している場合は、以下を追加します。
を追加してください。
androidTestAnnotationProcessor 'com.google.dagger:dagger-compiler:<version>'
JUnitのテスト用。
testAnnotationProcessor 'com.google.dagger:dagger-compiler:<version>'
EDIT :
を使用している場合
kotlin-kapt
を使用している場合は、次のように記述します。
kaptAndroidTest 'com.google.dagger:dagger-compiler:<version>'
またはJUnitのテスト用。
kaptTest 'com.google.dagger:dagger-compiler:<version>'
チェック この をご覧ください。
関連
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] 文字サイズとアンドロイドの画面サイズの違い
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] WhatsAppでメッセージを送信する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] BottomNavigationViewを新しいNavControllerで使用する際に、フラグメントを生かす方法はありますか?
-
[解決済み] ブルートゥースアプリケーションのテストにアンドロイドエミュレータを使用するには?
-
[解決済み] 文字列リソースにHTML?