2017-11-06 4 views
2

私は、グラデルプロジェクトの形でアンドロイドコンポーネントを構築しています。 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をテストしたいです。 興味深いことに、AndroidのメーカーはMyUnitTests.ktにするとき、私のセットアップRobolectricを文句はありません:

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

しかし、私はユニットテストを実行しようとすると、Gradleでは、このエラーを私に提示している:

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

マイソースコードのtestソースセットには、androidTestソースセットへのアクセス権がないと推測されます。

どうすればいいですか(testからandroidTestのクラスとリソースにアクセスできます)インストルメンテーションテストとユニットテストの間でコードを共有するとき、これは正しいアプローチですか、それとも良い方法がありますか?

答えて

3

私は、多くの場合、SRC/commonTest/JavaののsourceSetを作成することでこれを回避し、私のGradleファイルに以下を追加することにより、計装テストやユニットテストの両方にそれを公開:

android { 
    sourceSets { 
     String sharedTestDir = 'src/commonTest/java' 
     test { 
      java.srcDir sharedTestDir 
     } 
     androidTest { 
      java.srcDir sharedTestDir 
     } 
    } 
} 
関連する問題