docker run -d -p 8089:8080 wiremock/wiremock mvn test -Dtest='!*IntegrationTest'
集成测试直接打预发地址,对方凌晨发版,第二天流水线 14 条用例全红,报 connection refused。重跑三次结果一样。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,用例把外部环境的可用性当成了自己的前置条件,对方一变更就传导过来。跑出来的结果反映的是别人家的发布节奏。
「集成测试依赖线上」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
处理上按这个顺序:外部依赖换成 WireMock 或本地容器 用例自己起服务;必须连真实环境就单独打标签 不进主流水线;返回做契约校验 别把具体数据写死;地址挪进配置 并补上超时。
改完只确认一件事:断网状态下集成用例仍能跑完 主流水线不再受对方发版影响。
