我在跨模块测试应用程序共享代码时遇到问题。
我在TestCoroutineContextProvider
片段中放置了几个类(CoroutinesTestRule
和presentation
)。
为了在单元测试和UI测试之间共享代码,我在presentation build.gradle
中具有以下内容:
sourceSets {
test {
java.srcDirs += "$projectDir/src/testShared"
}
androidTest {
java.srcDirs += "$projectDir/src/testShared"
}
}
这样,我认为我可以在ViewModel和Fragment测试中访问这两个文件。 但是,尽管文件已正确导入并且没有IDE错误,但是在尝试运行测试时,我得到以下信息:
e: /features/account/src/test/java/me/myapp/account/AccountViewModelTest.kt: (35, 30): Unresolved reference: CoroutinesTestRule
,其他文件也一样。
我做错什么了吗?
非常感谢!
答案 0 :(得分:0)
您需要执行以下操作才能在单元测试和仪器测试之间共享代码:
build.gradle
文件中,添加以下内容:sourceSets {
// Share test utils between unit and instrumented tests
test.java.srcDirs += 'src/sharedTest/kotlin'
androidTest.java.srcDirs += 'src/sharedTest/kotlin'
}
其中sharedTest
是共享实用程序将进入的目录/模块名称
build.gradle
所在的模块,然后导航至src
并创建一个名为sharedTest
的目录,并在其中创建kotlin
kotlin
目录标记为“ Test Sources Root”,以便IDE将其显示为测试目录注意:即使在这之后有时,当您尝试使用这些共享实用程序时,IDE也会显示错误/警告,但是如果您运行这些测试,则通过gradle执行时它们也会通过。通常,在执行gradle同步或重新启动Android Studio之后,我已经看到此问题消失了