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>

FormatoSalidaÚsalo para
text (predeterminado)Los proyectos afectados con el motivo, y después el plan de pruebasLeer
jsonCada proyecto y clase de prueba con su decisión, las evidencias y la estimación de tiempoScripts, paneles
pathsUn .csproj de pruebas afectado por líneaAlimentar otra herramienta
commandsUn comando dotnet test por proyecto de pruebas, con su filtroEjecutar 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

VariableQué hace
TESTDETTA_LICENSELa cadena de licencia, desde un secreto de CI.
TESTDETTA_LICENSE_FILEUn archivo que contiene la cadena de licencia.
TESTDETTA_LICENSE_REFRESH=offDesactiva la actualización diaria de la licencia, para redes que no pueden acceder al servicio de licencias.
TESTDETTA_LICENSE_SCOPEEl repositorio que debe cubrir la licencia, cuando el remoto origin no lo nombra (por ejemplo, un mirror local).
HTTPS_PROXYProxy para la actualización de la licencia.

Códigos de salida

CódigoSignificado
0Éxito, incluido "no se necesitan pruebas".
1El análisis falló: git, el sistema de archivos o un archivo de proyecto.
2Línea de comandos no válida.
3Fallaron pruebas (test y record).