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:

ArchivoEjecuta
Directory.Build.props, Directory.Build.targets, Directory.Build.rspTodos los proyectos de pruebas por debajo
Directory.Solution.props, Directory.Solution.targetsTodos los proyectos de pruebas por debajo
global.json, NuGet.config, .editorconfigTodos los proyectos de pruebas por debajo
Directory.Packages.props, si solo cambiaron elementos PackageVersionSolo 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

CambioPor qué no se puede acotar
El archivo de proyecto, o un archivo .props o .targets que importaPuede 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 pruebaNingún mapa de cobertura indica quién lo lee.
Un global using o un atributo de ensambladoSe aplica a todos los archivos.
Un cambio de C# en código que ninguna declaración abarca, por ejemplo bajo una condición del preprocesadorNo 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 BasicSu código no se analiza.
Un proyecto usado como analizador o generador de código fuenteSu 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

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.