如何获得不同的单元和instrumentationTests为Android的顶级功能的实现

我有一个顶级功能的kotlin文件(不是任何类的成员)。 它编译为Java中的静态函数类。 我想为单元测试(独立于平台)和仪器测试(生产行为+ Espresso Idling Resource)提供不同的函数实现。 我可以把同一个文件放在prod和测试的相同路径中,但是当我把它放到测试中,androidTest – IDE在一个源文件集中看到它,并且无法解析我想要使用的函数。 由于我使用的是顶级函数,因此我不能使用DI将不同的实现传递给测试类。

是否有任何不同的测试和androidTest顶级功能的类的实现?

我试过了

sourceSets { androidTest { java.srcDirs = ['src/androidTest/java'] java.exclude('src/test/java/util/CoroutinesUi.kt') } test { java.srcDirs = ['src/test/java'] } } 

没有运气。

我现在通过创建对象委托来解决这个问题,得到实现,而我的顶级函数只是从这个委托调用当前可用的实现。 在这种情况下,我必须在基本测试中重置@Before中的实现,但是几乎没有虚拟调用,这是可以的。