2017-04-13 6 views
0

Dagger2를 사용하는 앱에 대한 계측 테스트를 작성하려고합니다. 이 앱에는 여러 가지 빌드 유형이 있으며 그 중 하나를 자동화라고합니다. 자동화 빌드 유형도 build.gradle의 testBuildType으로 설정됩니다.맛과 androidTest 소스 세트가있는 Dagger2 사용

테스트하려는 액티비티에는 저장소에 의존하는 Presenter가 삽입되어 있습니다. 자동화를 제외하고 빌드 유형을 빌드 할 때 실제 저장소를 삽입하고 오토메이션 빌드 변형을 빌드 할 때 mock Repository를 삽입하고 싶습니다.

내 androidTest 소스 세트에서 MockComponent와 MockModule을 만들어 저장소 모의 버전을 만든다. 내가 할 수있을 것이라고 생각한 것은 MockComponent의 인스턴스를 만들고 모의 저장소를 제공하는 것입니다. 문제는 MockComponent와 MockModule이 androidTest 소스 세트에 있고 Dagger가 빌드 할 때 DaggerMockComponent 클래스를 생성하지 않는다는 것입니다. MockComponent와 MockModule을 자동화 소스 세트로 옮긴다면 Dagger는 클래스를 생성하지만, 나는 MockComponent에 injection 메소드를 추가하여 작업 테스트 클래스에 객체를 삽입 할 수 있지만 MockComponent는 객체를 삽입 할 수 있습니다. 안드로이드 소스 세트에 있기 때문에 활동 테스트 클래스를 볼 수 없습니다.

Dagger가 androidTest 소스 세트에있을 때 DaggerMockComponent 클래스를 생성하지 않는 이유는 무엇입니까?

답변

1

문제는 내 build.gradle 파일에서 androidTest 소스 세트에 대한 종속성을 포함해야한다는 것이 었습니다. 일반적으로 당신은

androidTestCompile "com.package.version:1.2.3" 

를 사용하지만 단검을 위해 당신은 라인의 모습 있도록 적절한 사용해야합니다 : 이것에 대해 정말 혼란스러운 일이 있었다
androidTestApt "com.google.dagger:dagger-compiler:$rootProject.ext.daggerVersion" 

이 나는 ​​빌드 형식 (자동화)에 대한 사용하고 있기 때문에 내 testBuildType 자동화 소스 집합에 대거 코드를 추가 할 수 있었고 단검이 androidTest 소스 집합에 없었던 b/c를 컴파일 할 수있었습니다. 그런 다음 androidTest 소스 세트에 대거 코드를 추가하려고했는데 갑자기 대검 컴파일러 b/c에서 보이지 않는 것처럼 androidTest 소스 세트에 지정된 구성 요소의 대거 클래스를 생성하지 않았습니다.