fix: issue #29 — integration tests flakiness (DB split + SqlTestFixture consolidado) #34
Reference in New Issue
Block a user
Delete Branch "fix/issue-29-flakiness"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #29
Implementa las opciones 2+3 combinadas del issue:
SIGCM2_Test_AppparaApplication.TestsSIGCM2_Test_ApiparaApi.TestsSIGCM2_Test.DatabaseCollection.cscon[CollectionDefinition("Database")]+ICollectionFixture<SqlTestFixture>Respawnerinline, usan el fixture compartidoSqlTestFixture.TablesToIgnorees la única fuente de verdadCambios por capa
Database infra
database/init/create-test-api-db.sql— idempotent: creaSIGCM2_Test_AppySIGCM2_Test_Apisi no existen.database/README.md— sección "Test DBs" con comando PowerShell+SqlClient (bypasea el ODBC driver 17 no instalado) para aplicar V010.SqlTestFixture.EnsureV0XXAsync).TestSupport centralization
tests/SIGCM2.TestSupport/TestConnectionStrings.cs— constantesAppTestDb+ApiTestDb.SqlTestFixture: nuevo ctorpublic SqlTestFixture() : this(TestConnectionStrings.AppTestDb)(requerido porICollectionFixture<T>).TestWebAppFactory.cs: usaTestConnectionStrings.ApiTestDb.Application.Tests refactor
DatabaseCollection.cscon[CollectionDefinition("Database")].[Collection("Database")]+SqlTestFixture dbinjection:MedioRepositoryTestsSeccionRepositoryTestsV009MigrationTestsUsuarioRepositoryTestsUsuarioRepository_PermisosTestsRefreshTokenRepositoryTestsTestConnectionStrings.AppTestDbo.ApiTestDb.Documentation
database/README.md: agrega V013, V014, V015 + sección "Test DBs" con runbook.Verificación
Ejecutado
dotnet test(ambos proyectos en paralelo, comportamiento default) 6 veces consecutivas:Mejora: pre-issue #29 teníamos 47-199 fallos catastróficos; post-fix queda 1 test intermitente residual.
Residual flake (follow-up menor diferido)
Un único test puede fallar intermitentemente:
SIGCM2.Application.Tests.Infrastructure.Audit.AuditEventRepositoryTests.QueryAsync_Limit_EmitsCursor_WhenMoreRowsAvailable[Collection("Database")](clases serializadas intra-collection).[TestCaseOrderer], cleanup per-test, o refactorear el cursor test.Engram artifacts
sdd/issue-29-integration-tests-flakiness/exploresdd/issue-29-integration-tests-flakiness/proposalsdd/issue-29-integration-tests-flakiness/specsdd/issue-29-integration-tests-flakiness/designsdd/issue-29-integration-tests-flakiness/taskssdd/issue-29-integration-tests-flakiness/apply-progressNota de conflicto con CAT-001 (PR #30)
Esta rama está basada en
main(pre-CAT-001). Cuando ambas merged, habrá conflict enSqlTestFixture.cs(CAT-001 agregaEnsureV016SchemaAsync+Rubro_HistoryalTablesToIgnore). Resolución trivial al merge time — ambos cambios son aditivos.Impacto post-merge
sig-cm2/conventions/new-temporal-table-test-propagationqueda OBSOLETE. Nueva convención: para cada temporal table nueva, actualizar soloSqlTestFixture(1 archivo, no 7+).