Android单元测试将不会使用正确的应用程序类
我正在遇到一些奇怪的行为,就像android在单元测试中选择Application
类一样。
我在目录src/testDevelopmentDebug
有Robolectric单元测试
我也有一些测试代码分别在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
类,并使用它。 现在这是怪异的部分。 如果我在src/testDevelopmentDebug
扩展SharedTestApplication
,则不做任何事情。 (甚至不改变清单),那么它就像我想要的那样使用SharedTestApplication
。
任何想法为什么?
Robolectric正在加载默认的AndroidManifest.xml
除非您在@Config
指定不同的清单。 您也可以在@Config
指定应用程序类。
在教程中查看更多内容。