关于 android 如何在单元测试中选择 Application
类,我遇到了一些奇怪的行为。
我在目录 src/testDevelopmentDebug
中有 Robolectric 单元测试
我还有一些测试代码在 src/testDevelopmentDebug
和 androidTestDevelopment
之间共享,分别用于单元测试和浓缩咖啡测试。共享代码在 src/sharedTest
中,我在我的 build.gradle
文件中有这样的设置:
sourceSets {
// Android Studio / the Android Studio Kotlin Plugin will stop recognizing these source folders as source
// folders without explicitly setting them
main.java.srcDirs += 'src/main/kotlin'
testDevelopmentDebug.java.srcDirs += 'src/testDevelopmentDebug/kotlin'
androidTestDevelopment.java.srcDirs += 'src/androidTestDevelopment/kotlin'
// Share code between UI and unit tests.
def sharedTestDir = 'src/sharedTest/kotlin'
androidTestDevelopment.java.srcDirs += sharedTestDir
testDevelopmentDebug.java.srcDirs += sharedTestDir
}
我的问题是我试图在两者之间共享一个 Application
类,但它并不完全有效。我在共享测试文件夹中有 SharedTestApplication
。但是当我像这样在 testDevelopmentDebug/AndroidManifest.xml
文件中引用它时:
<application android:name="com.books.sharedtest.SharedTestApplication"/>
Espresso 测试使用 SharedTestApplication
就像我期望的那样。
单元测试默认回到我的 src/main
Application
类并使用它。现在这是奇怪的部分。如果我在 src/testDevelopmentDebug
中扩展 SharedTestApplication
并且什么都不做。 (甚至不更改 list )然后它像我希望的那样使用 SharedTestApplication
。
知道为什么吗?
最佳答案
Robolectric 正在加载默认 AndroidManifest.xml
,除非您在 @Config
中指定不同的 list 。您也可以在 @Config
中指定应用程序类。
在 tutorial 中查看更多信息.
关于java - Android 单元测试不会使用正确的应用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195036/