2017-11-06 2 views
2

나는 gradle 프로젝트의 형태로 안드로이드 구성 요소를 구축하고 있습니다. espresso 프레임 워크를 사용하여 여러 구성에서 구성 요소 UI를 테스트하려면 소스 세트에 TestActivity이 있어야합니다. androidTest와 테스트 사이에 공유 코드 구성

파일 트리를 명확히하기 위해 :

src/ 
    androidTest/ 
     java/my.package/ 
      TestActivity.kt 
      ... 
     res/layout/ 
      my_test_activitity.xml 
    test/ 
     java/my.package/ 
      MyUnitTests.kt 

지금 내 단위 테스트의 일부 robolectric을 사용하기 시작하고 또한 거기에서 내 TestActivity을 테스트 할 수 있습니다. 흥미롭게도 , 안드로이드 스튜디오는 불평하지 않는 경우 MyUnitTests.kt에서 나는 설정 Robolectric :

그러나
val activity = Robolectric.setupActivity(TestActivity::class.java) // no error 

, I는 단위 테스트를 실행하려고하면, Gradle을이 오류로 날 제시 :

e: src/test/java/my.package/MyUnitTests.kt: Unresolved reference: TestActivity 

내 소스가 test 소스 세트는 androidTest 소스 세트에 액세스 할 수 없다고 추측됩니다.

어떻게하면 되나요? test에서 androidTest의 클래스와 리소스를 수정할 수 있습니까? 계측 테스트와 단위 테스트간에 코드를 공유 할 때 올바른 방법일까요? 아니면 더 좋은 방법이 있습니까?

답변

3

나는 종종 SRC/commonTest/자바 sourceset을 만들어이 문제를 해결 얻고 내 Gradle을 파일에 다음을 추가하여 계측 테스트 및 단위 테스트 모두에 그 노출 :

android { 
    sourceSets { 
     String sharedTestDir = 'src/commonTest/java' 
     test { 
      java.srcDir sharedTestDir 
     } 
     androidTest { 
      java.srcDir sharedTestDir 
     } 
    } 
} 
관련 문제