Referencia de la CLI
Todos los comandos, opciones y variables de entorno, con lo que hacen, su valor predeterminado y un ejemplo. Ejecuta td --help para ver la versión breve.
td affected [options] Print the projects and tests a change affects
td test [options] [-- <args>] Run only the tests a change affects
td record [options] Run all tests with coverage and store the map
td license status [options] Check the license and show what it covers
td license install <license|file> Store a license in ~/.testdetta/license
Opciones para cualquier análisis
Funcionan con affected, test y record.
--base <ref>
La ref de git con la que comparar. TestDetta compara tu árbol de trabajo con la merge base de HEAD y esta ref, así que los commits que llegaron a la rama base después de que crearas tu rama no cuentan como cambios tuyos. Predeterminado: origin/main.
td test --base origin/develop
td affected --base HEAD~3 # the last three commits and anything uncommitted
--repo <path>
Cualquier ruta dentro del repositorio que se vaya a analizar. Predeterminado: el directorio actual.
td affected --repo ../shop
-v, --verbose y --log-level <level>
Los registros van a stderr, así que stdout sigue siendo legible por máquinas. -v activa los registros de depuración, que explican cada decisión: por qué un proyecto está afectado, qué miembro ejecutó una clase de prueba, qué nombre siguió un rastreo. --log-level elige cualquiera de trace, debug, information, warning (predeterminado), error o none; trace añade la salida sin procesar de git.
td affected -v 2> testdetta-debug.log
td test --log-level information
--max-map-age <n>
Usa un mapa de cobertura registrado hasta n commits de primer padre antes de la merge base cuando no hay ninguno en la propia merge base. Los cambios intermedios se salvan: también se seleccionan las clases que ejecutaron cualquier miembro modificado desde el mapa y capaz de llegar a tu cambio. 0 usa solo un mapa registrado en la merge base. Predeterminado: 50. Consulta Cómo decide.
td test --max-map-age 20
--drift-fallback <all|name>
Qué hacer cuando los cambios desde un mapa más antiguo incluyen algo que no se puede describir en términos de miembros: un archivo de compilación, configuración, un global using. all (predeterminado) ejecuta completos los proyectos de pruebas afectados; name decide por nombre, lo que es más rápido pero ciego a las llamadas conectadas mediante configuración o reflexión.
td test --drift-fallback name
--maps-dir <dir>
Guarda los mapas de cobertura fuera del repositorio, una carpeta por commit. record guarda en <dir>/<commit>/; affected y test restauran el más reciente dentro de --max-map-age. Úsala en sistemas de CI distintos de GitHub Actions, con un disco compartido o un almacenamiento de objetos sincronizado. Predeterminado: los mapas se guardan en .testdetta/coverage dentro del repositorio.
td record --maps-dir /srv/testdetta-maps/shop
td test --base origin/main --maps-dir /srv/testdetta-maps/shop
td affected
Muestra qué afecta un cambio y por qué, sin compilar ni ejecutar nada.
--format <text|json|paths|commands>
| Formato | Salida | Úsalo para |
|---|---|---|
text (predeterminado) | Los proyectos afectados con el motivo, y después el plan de pruebas | Leer |
json | Cada proyecto y clase de prueba con su decisión, las evidencias y la estimación de tiempo | Scripts, paneles |
paths | Un .csproj de pruebas afectado por línea | Alimentar otra herramienta |
commands | Un comando dotnet test por proyecto de pruebas, con su filtro | Ejecutar las pruebas a tu manera |
td affected --format json > plan.json
td affected --format paths | xargs -n1 dotnet build
--tests-only
Lista solo los proyectos de pruebas afectados, no los proyectos de producción intermedios.
td test
Compila y ejecuta solo las pruebas afectadas: un filtro por proyecto de pruebas cuando solo algunas clases están afectadas, el proyecto completo cuando lo están todas o cuando un cambio no se puede acotar, y nada cuando no lo está ninguna. Código de salida 3 cuando falla alguna prueba.
--dry-run
Muestra los comandos dotnet test en lugar de ejecutarlos. Un proyecto cuyo global.json está en una subcarpeta se muestra como (cd src && dotnet test ...).
--summary-file <path>
Añade un resumen en Markdown: el resultado de cada proyecto, qué clases se ejecutaron y por qué, cuáles se omitieron y el tiempo de prueba registrado que se ahorró. Apúntalo a $GITHUB_STEP_SUMMARY en GitHub Actions; la acción lo hace por ti. Mira un ejemplo.
td test --summary-file "$GITHUB_STEP_SUMMARY"
-- <dotnet test arguments>
Todo lo que va después de -- se pasa a cada llamada a dotnet test.
td test -- -c Release --logger trx
td test -- --no-restore
td record
Ejecuta todas las pruebas con cobertura y escribe un mapa por proyecto de pruebas en .testdetta/coverage (o en --maps-dir). Ejecútalo en tu rama predeterminada; es también la ejecución completa de pruebas de esa rama. Código de salida 3 cuando fallan pruebas; los mapas se escriben igualmente, y las clases que fallan se seleccionan siempre más adelante.
-c, --configuration <name>
Configuración de compilación. Predeterminado: Debug.
-f, --framework <tfm>
Framework de destino que se registra en un proyecto de pruebas con varios destinos. Predeterminado: el primer framework de destino del proyecto.
td record -f net10.0
--project <path>
Registra solo este proyecto de pruebas, con la ruta relativa a la raíz del repositorio; repítela para varios. Excluye los proyectos que no pueden ejecutarse en CI, como las pruebas de integración que necesitan una base de datos; entonces se deciden por nombre.
td record --project tests/Shop.Tests/Shop.Tests.csproj --project tests/Api.Tests/Api.Tests.csproj
--parallel <n>
Reparte las clases de prueba de cada proyecto entre n procesos de prueba para registrar más rápido. Cada proceso sigue ejecutando sus pruebas de una en una. Tu conjunto de pruebas debe tolerar varios procesos de prueba a la vez (sin puertos fijos ni archivos compartidos). Predeterminado: 1.
--no-build
Registra la salida de una compilación anterior con la misma configuración en lugar de volver a compilar.
dotnet build -c Release
td record -c Release --no-build
td license
td license status comprueba la licencia igual que lo haría td test y muestra lo que cubre: licenciatario, puestos, committers activos en los últimos 30 días, la lista de bots, los ámbitos y la fecha de fin. No envía datos personales a ninguna parte. td license install <license|file> guarda una licencia en ~/.testdetta/license, para máquinas donde ningún secreto de CI puede contenerla. Consulta Licencia.
Variables de entorno
| Variable | Qué hace |
|---|---|
TESTDETTA_LICENSE | La cadena de licencia, desde un secreto de CI. |
TESTDETTA_LICENSE_FILE | Un archivo que contiene la cadena de licencia. |
TESTDETTA_LICENSE_REFRESH=off | Desactiva la actualización diaria de la licencia, para redes que no pueden acceder al servicio de licencias. |
TESTDETTA_LICENSE_SCOPE | El repositorio que debe cubrir la licencia, cuando el remoto origin no lo nombra (por ejemplo, un mirror local). |
HTTPS_PROXY | Proxy para la actualización de la licencia. |
Códigos de salida
| Código | Significado |
|---|---|
0 | Éxito, incluido "no se necesitan pruebas". |
1 | El análisis falló: git, el sistema de archivos o un archivo de proyecto. |
2 | Línea de comandos no válida. |
3 | Fallaron pruebas (test y record). |