test: 测试库改为模板克隆并纳入完整租号 e2e

每个包不再重复 DROP+迁移,清空改用 DELETE 并重置自增,go test ./... 从约 6 分钟降到十几秒。租号全链路改走 NewTestDB,去掉依赖额外 DSN 才会跑的过渡测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
yml2213
2026-09-10 15:46:18 +08:00
co-authored by Cursor
parent cbd5412315
commit 47ceb53c09
11 changed files with 456 additions and 275 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ OUTPUT="$(mktemp -t hfb-backend-cover-output.XXXXXX)"
trap 'rm -f "${PROFILE}" "${OUTPUT}"' EXIT
cd "${BACKEND_DIR}"
# 每个测试包使用独立 MySQL 测试库,可并发执行。
# 模板库只迁移一次,各包克隆后可并发;指纹未变则跨次运行复用。
go test -count=1 -coverprofile="${PROFILE}" ./... | tee "${OUTPUT}"
coverage_for_package() {
+1 -2
View File
@@ -96,8 +96,7 @@ if [[ "${SKIP_BACKEND}" == "0" ]]; then
run_step "go vet ./..." go vet ./... || FAILED=1
run_step "go build ./..." go build ./... || FAILED=1
if [[ "${SKIP_TESTS}" == "0" ]]; then
# 后端测试跑在真实 MySQL 上:每个包使用独立测试库 hfb_sys_test_<包名>,可并发执行。
# 真实链路 e2e(internal/e2e 中依赖 HFB_E2E_DSN 的用例)需要显式配置该变量。
# 后端测试跑在真实 MySQL 上:模板库只迁移一次,各包克隆后可并发。
run_step "准备 MySQL 测试库" bash "${ROOT_DIR}/scripts/prepare-test-db.sh" || FAILED=1
run_step "go test + coverage" bash "${ROOT_DIR}/scripts/check-backend-coverage.sh" || FAILED=1
else
+1 -1
View File
@@ -43,4 +43,4 @@ GRANT ALL PRIVILEGES ON \`${pattern}\_%\`.* TO '${app_user}'@'%';
FLUSH PRIVILEGES;
SQL
printf '测试库授权已就绪。测试运行时会自动重建各自的库:%s_<包名>\n' "${base_database}"
printf '测试库授权已就绪。测试运行时会维护模板库 %s__template,并按包克隆为 %s_<包名>\n' "${base_database}" "${base_database}"