Android 单元测试工件未出现 Studio 测试文件夹
Android Studio Test Folder not appearing for Unit Test Artifact
当 Test Artifact 切换到 Android Instrumentation Test 时,androidTest 出现在我的 Android Studio 中。但是,当 Test Artifact 切换回 Unit Test 时。整个 androidTest 文件夹消失。这个项目是从 Eclipse 迁移过来的。我的项目有多种口味。
Gradle.build
sourceSets {
main {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour1 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour2 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour3 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour4 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
androidTest.setRoot('tdd/test')
androidTest {
java.srcDirs = ['tdd/test/java']
}
}
我不明白为什么它在单元测试中消失,但在 Android 仪器测试中出现。
我相信这就是答案。即使在 Unit Test Artifact 中,我也设法创建了测试文件夹。当应用程序有多个变体时,Gradle 不知道项目结构,导致它失去检测单元测试和仪器测试的能力。所以为了实现单元测试,在build.gradle中的android方法内添加测试方法;至于Android Instrumentation Test,在build.gradle;
中的android方法中添加androidTest方法
示例:
build.gradle
sourceSets {
test.setRoot('anydir') // for Unit Test
androidTest.setRoot('anydir') // for Android Instrumentation Test
}
仅当 Android Studio 无法识别您的测试文件夹时才需要上述代码,因为您有多个变体并且您更改了 java 代码的目录。
当 Test Artifact 切换到 Android Instrumentation Test 时,androidTest 出现在我的 Android Studio 中。但是,当 Test Artifact 切换回 Unit Test 时。整个 androidTest 文件夹消失。这个项目是从 Eclipse 迁移过来的。我的项目有多种口味。
Gradle.build
sourceSets {
main {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour1 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour2 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour3 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
flavour4 {
// manifest, java, renderscript, aidl, assets, res detail etc etc
}
androidTest.setRoot('tdd/test')
androidTest {
java.srcDirs = ['tdd/test/java']
}
}
我不明白为什么它在单元测试中消失,但在 Android 仪器测试中出现。
我相信这就是答案。即使在 Unit Test Artifact 中,我也设法创建了测试文件夹。当应用程序有多个变体时,Gradle 不知道项目结构,导致它失去检测单元测试和仪器测试的能力。所以为了实现单元测试,在build.gradle中的android方法内添加测试方法;至于Android Instrumentation Test,在build.gradle;
中的android方法中添加androidTest方法示例:
build.gradle
sourceSets {
test.setRoot('anydir') // for Unit Test
androidTest.setRoot('anydir') // for Android Instrumentation Test
}
仅当 Android Studio 无法识别您的测试文件夹时才需要上述代码,因为您有多个变体并且您更改了 java 代码的目录。