Android Studio添加test-shared模块后报Unresolved reference: test错误如何解决
问题根因
test-shared作为Java Library模块,默认仅将src/main/java下的代码对外暴露提供引用,你将MainCoroutineRule等公共测试代码放在了test-shared的src/test/java目录下,该目录属于模块内部测试专用目录,不会被打包进对外提供的构件中,因此app模块的test和androidTest目录都无法找到对应的类引用。
解决方案
方案1(推荐):移动代码到公开目录
将test-shared/src/test/java下所有需要共享的测试代码,移动到test-shared/src/main/java目录下即可。
如果需要让app模块的测试代码可以直接使用test-shared引入的依赖(如协程测试库、JUnit等),可以将test-shared的build.gradle中对应的implementation依赖声明改为api:
plugins { id 'java-library' } dependencies { api "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.4.2" api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3" api "junit:junit:$junit" api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" api 'androidx.core:core-ktx:1.3.2' // 本模块内部测试使用的依赖保留testImplementation即可 testImplementation "junit:junit:$junit" }
修改完成后同步Gradle,执行Clean Project + Rebuild Project即可解决报错。
方案2(不移动代码):配置源码集
如果不想调整代码存放位置,可以在test-shared的build.gradle中添加源码集配置,将测试目录的代码加入到对外暴露的源码中:
plugins { id 'java-library' } sourceSets { main { java.srcDirs += 'src/test/java' } } dependencies { // 依赖配置和方案1一致即可 }
同步Gradle后重新构建即可生效。
内容的提问来源于stack exchange,提问作者Jim Clermonts
相关产品推荐
相关产品推荐

