关于android如何在单元测试中选择Application
类,我遇到了一些奇怪的行为。
我在目录src/testDevelopmentDebug
我还在src/testDevelopmentDebug
和androidTestDevelopment
之间分享了一些测试代码,分别用于单元测试和espresso测试。共享代码位于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
类并改为使用它。现在这里是奇怪的部分。如果我在SharedTestApplication
中延伸src/testDevelopmentDebug
而不执行任何其他操作。 (甚至没有更改清单)然后它使用我想要的SharedTestApplication
。
知道为什么吗?
答案 0 :(得分:1)
Robolectric 正在加载默认AndroidManifest.xml
,除非您在@Config
中指定了不同的清单。您也可以在@Config
中指定应用程序类。
在tutorial。
中查看更多内容