You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 04:15:04