组织androidTest和test之间的共享代码

组织androidTest和test之间的共享代码,android,android-gradle-plugin,android-testing,robolectric,Android,Android Gradle Plugin,Android Testing,Robolectric,我正在以gradle项目的形式构建一个android组件。为了在框架的几种配置中测试我的组件UI,我在androidTest源集中有一个TestActivity,我可以对其进行测试 要澄清文件树,请执行以下操作: src/ androidTest/ java/my.package/ TestActivity.kt ... res/layout/ my_test_activitity.x

我正在以gradle项目的形式构建一个android组件。为了在框架的几种配置中测试我的组件UI,我在
androidTest
源集中有一个
TestActivity
,我可以对其进行测试

要澄清文件树,请执行以下操作:

src/
    androidTest/
        java/my.package/
            TestActivity.kt
            ...
        res/layout/
            my_test_activitity.xml
    test/
        java/my.package/
            MyUnitTests.kt
现在我想开始使用它进行一些单元测试,并从那里测试我的
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
源代码集,尽管androidstudio似乎认为它可以访问


如何修复此问题(使
androidTest
中的类和资源可从
test
访问)?在插装测试和单元测试之间共享代码时,这是正确的方法还是有更好的方法?

我经常通过创建src/commonTest/java源集来解决这一问题,并通过将以下内容添加到我的gradle文件中,将其公开给插装测试和单元测试:

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

这对我不起作用,我是这样试的。它一直告诉我代码不存在exist@LenaBru你能发布一个显示你的目录结构和代码的图片来从你的gradle文件中设置它吗?