Qué lo ejecuta todo
La mayoría de los cambios seleccionan unas pocas clases de prueba. Algunos no se pueden acotar de forma segura, así que TestDetta ejecuta un proyecto de pruebas completo o todos los proyectos bajo una carpeta. Esta página los enumera todos, para que una selección amplia nunca te sorprenda.
Archivos que afectan a toda la compilación
Estos archivos cambian cómo se compila cada proyecto que está por debajo de ellos. Un cambio en uno de ellos ejecuta todos los proyectos de pruebas de su carpeta y de las carpetas inferiores:
| Archivo | Ejecuta |
|---|---|
Directory.Build.props, Directory.Build.targets, Directory.Build.rsp | Todos los proyectos de pruebas por debajo |
Directory.Solution.props, Directory.Solution.targets | Todos los proyectos de pruebas por debajo |
global.json, NuGet.config, .editorconfig | Todos los proyectos de pruebas por debajo |
Directory.Packages.props, si solo cambiaron elementos PackageVersion | Solo los proyectos de pruebas que hacen referencia a un paquete modificado y los que dependen de ellos |
Directory.Packages.props, cualquier otro cambio (una GlobalPackageReference, el pinning transitivo, propiedades) | Todos los proyectos de pruebas por debajo |
Cambios que ejecutan un proyecto de pruebas completo
| Cambio | Por qué no se puede acotar |
|---|---|
El archivo de proyecto, o un archivo .props o .targets que importa | Puede cambiar cómo se compila cualquier cosa del proyecto. |
Cualquier archivo del proyecto que no sea de C#, como appsettings.json, un .resx o un archivo de datos de prueba | Ningún mapa de cobertura indica quién lo lee. |
Un global using o un atributo de ensamblado | Se aplica a todos los archivos. |
| Un cambio de C# en código que ninguna declaración abarca, por ejemplo bajo una condición del preprocesador | No hay ningún miembro que seguir. |
| Un tipo modificado que nada nombra, pero que un framework podría descubrir por reflexión (controladores, manejadores de mensajes, configuraciones de EF) | Ni los nombres ni la cobertura pueden decir quién lo encuentra. |
| Un cambio en un proyecto de F# o Visual Basic | Su código no se analiza. |
| Un proyecto usado como analizador o generador de código fuente | Su efecto está en la compilación, no en las llamadas. |
Cada uno de estos casos ejecuta además todos los proyectos de pruebas que dependen del proyecto afectado.
Situaciones con mapas de cobertura
- Un mapa más antiguo con cambios de compilación entremedias. Cuando el mapa es unos commits anterior a tu merge base y entretanto cambió un archivo de compilación o de configuración, los proyectos de pruebas afectados se ejecutan completos.
--drift-fallback namelos decide en su lugar por nombre. Consulta el drift bridge. - Todas las clases seleccionadas. Un proyecto cuyas clases están todas seleccionadas se ejecuta sin filtro.
- Un filtro que no coincide con nada. El proyecto se vuelve a ejecutar sin el filtro, y TestDetta lo trata como un error propio.
No tener ningún mapa no lo ejecuta todo: la selección recurre al rastreo por nombre, que es más amplio que la cobertura pero sigue siendo acotado.
Archivos que se ignoran
Un archivo modificado fuera de todas las carpetas de proyecto, como README.md, los archivos bajo .github/ o un script en la raíz del repositorio, no pertenece a ningún proyecto y no selecciona nada. Aparece en la salida como no asignado.
Si tus pruebas leen un archivo que está fuera de todas las carpetas de proyecto, un cambio en él no las seleccionará. Mantén esos archivos dentro del proyecto de pruebas o decláralos como elementos suyos, por ejemplo <None Include="..\..\testdata\**" CopyToOutputDirectory="PreserveNewest" />. Así el archivo pertenece al proyecto esté donde esté, y cambiarlo o borrarlo ejecuta el proyecto.
Una excepción: un archivo de código fuente o de compilación que ningún proyecto reclama (.cs, .fs, .vb, .props, .targets, .projitems) cuenta como entrada de compilación de todos los proyectos cuyos imports no se pudieron resolver por completo, así que esos se ejecutan.