我正在以gradle项目的形式构建一个android组件。要使用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时,Android Studio不会抱怨:
val activity = Robolectric.setupActivity(TestActivity::class.java) // no error
但是,当我尝试运行单元测试时,gradle会向我显示此错误:
e: src/test/java/my.package/MyUnitTests.kt: Unresolved reference: TestActivity
我的猜测是test
源集无法访问androidTest
源集,即使Android Studio似乎认为它已经存在。
如何解决此问题(使androidTest
中的类和资源可以从test
访问)?在仪器测试和单元测试之间共享代码时,这是否是正确的方法,还是有更好的方法?
答案 0 :(得分:3)
我经常通过创建一个src / commonTest / java源集来解决这个问题,并通过将以下内容添加到我的gradle文件中将其暴露给检测测试和单元测试:
android {
sourceSets {
String sharedTestDir = 'src/commonTest/java'
test {
java.srcDir sharedTestDir
}
androidTest {
java.srcDir sharedTestDir
}
}
}