单元测试出现NullPointerException问题排查求助
排查Presenter测试突发失败问题(无代码/配置改动)
兄弟,这种没碰任何东西测试突然挂的情况真的闹心!先帮你梳理几个大概率能解决问题的排查方向,另外你贴的测试代码最后有点截断(static org.moc...那部分),如果能补全报错信息或者完整代码会更精准,但先试试这些通用方案:
1. 先清缓存!Gradle/AS缓存抽风是重灾区
哪怕你没改配置,缓存损坏或者不一致是这种问题的头号嫌疑人:
- 先跑个
./gradlew clean清理项目构建目录 - 去Android Studio里点 File → Invalidate Caches...,勾选「Clear file system cache and local history」然后重启AS
- 狠一点的话,手动删掉项目根目录下的
.gradle文件夹,还有用户目录里的~/.gradle/caches,然后重新同步项目
2. 检查Mockito依赖冲突
你没改Gradle不代表其他依赖没搞事情——有些库会间接引入不同版本的Mockito,导致版本冲突。用这个命令看依赖树:
./gradlew dependencies
搜索mockito相关的条目,看看是不是同时出现了mockito-core、mockito-android不同版本的情况,有的话就用force强制统一版本。
3. 测试环境偷偷变了?
- 检查JDK版本:去File → Project Structure → SDK Location看JDK Location,是不是不小心切换了版本?比如从Java 8换成了11,老版本Mockito对高JDK兼容性不好
- 看看
JAVA_HOME环境变量有没有被修改,这会直接影响Gradle的构建环境 - 最近更过Android Studio吗?AS更新有时候会默认调整一些构建参数,哪怕你没手动改设置
4. 测试用例之间的状态污染
有时候测试看起来独立,但其实某个静态变量被其他测试修改了,导致这个Presenter测试受影响。试试单独运行这个测试方法,而不是跑整个测试类,如果单独跑正常,那就是测试间的状态问题,给测试加@After方法清理静态变量或者重置Mock对象。
另外,你贴的测试代码最后static org.moc...应该是static org.mockito.Mockito.*吧?虽然你说之前正常,但还是确认下代码有没有不小心被截断或者误改(比如IDE自动补全搞的小乌龙)。
如果这些都没用,把测试失败的具体报错信息贴出来——是NPE?还是Mockito的VerificationError?或者ClassNotFoundException?有了报错信息就能精准定位了!
内容的提问来源于stack exchange,提问作者Eselfar
相关产品推荐
相关产品推荐

