Si tengo una clase de prueba como
public class Tests { [TestCaseSource(nameof(TestSource))] public void Test(string c) { Assert.Pass(); } public static IEnumerable<object> TestSource() { for (char c = '\0'; c < 255; c++) { yield return c.ToString(); } } }entonces el ejecutor de pruebas en Visual Studio puede descubrir todas las pruebas, pero no las ejecuta todas.
estos son los rangos de caracteres ASCII que no se están ejecutando:
U_0001 - U_0006 U_000E - U_001F U_007F - U_0084 U_0086 - U_009F Actualmente usamos algunos de estos caracteres como U_0002 para pruebas relacionadas con el trabajo de la red que se incluyen en la prueba pero actualmente no se ejecutan
Esta es la salida para la ejecución de prueba.
---------- Starting test discovery for requested test run ---------- NUnit Adapter 3.17.0.0: Test discovery starting NUnit Adapter 3.17.0.0: Test discovery complete ========== Test discovery finished: 255 Tests found in 4,8 sec ========== ---------- Starting test run ---------- NUnit Adapter 3.17.0.0: Test execution started Running selected tests in C:\Users\WEIK014\source\repos\TestSourceTestProject\TestSourceTestProject\bin\Debug\netcoreapp2.1\TestSourceTestProject.dll NUnit3TestExecutor discovered 199 of 199 NUnit test cases NUnit Adapter 3.17.0.0: Test execution complete ========== Test run finished: 199 Tests run in 8,6 sec (199 Passed, 0 Failed, 0 Skipped) ==========como ves ni reconoce que se salta pruebas.
Versiones en el proyecto:
Aquí hay una prueba visual de que estas pruebas no se ejecutan 
Bueno, parece que probablemente sea un error en algún lugar de Visual Studio o el adaptador de prueba que muestra caracteres de control Unicode. Como solución alternativa, puede anular el nombre para mostrar de la prueba para los caracteres de control:
public static IEnumerable<TestCaseData> TestSource() { for (char c = '\0'; c < 255; c++) { var data = new TestCaseData(c.ToString()); if (char.IsControl(c)) { data.SetArgDisplayNames($"{(int)c:X4}"); } yield return data; } } Esto preservará la visualización de los caracteres imprimibles (por ejemplo Test("a") ), y los caracteres de control se mostrarán como Test(0001) , etc.