voz spanish reconocimiento recognition c# unit-testing tdd assertions

c# - spanish - Cómo extendiste tu clase de Assert



c# speech recognition spanish (5)

Me encanta Extender mi Assert.AreEqual a muchas clases diferentes, la conocida es la CollectionAssert por supuesto, pero puedo pensar en algunas más como: ImageAssert , XmlAssert, etc.

¿Creaste tus propias clases de Assert? y qué tipo de nuevo te gustaría crear?


Me gusta la sensación de la clase Assert, pero quería algo que sirviera más como un marco de validación general. Empecé con el artículo de Roger Alsing sobre el uso de métodos de extensión, y ahora tengo un sistema que funciona como:

Enforce.That(variable).IsNotNull(); Enforce.That(variable).IsInRange(10, 20); Enforce.That(variable).IsTypeOf(typeof(System.String)); etc.

Si falla alguna aplicación, arroja una excepción. He estado considerando refactorizar para poder incorporar una evaluación no crítica que no arroje una excepción. Algunos como Check.That como una variante de Enforce.That devolvería booleanos, pero tienen métodos de extensión con firmas idénticas.

Lo que me gusta de este enfoque, hasta ahora, es que puedo usarlos en mis pruebas unitarias, así como para las preocupaciones de validación previa y posterior a la validación en mi código actual sin hacer referencia al ensamblado Microsoft.VisualStudio.QualityTools.UnitTestFramework. Lo puse en mi ensamblado raíz para mi marco de aplicación, y Enforce está en la raíz, por lo que es muy fácil de acceder.


Muchas de mis pruebas giran en torno a la carga de un objeto que (como un CuttingPath) con un buen estado conocido. Realiza la prueba y luego compara el resultado con el objeto cargado. Si difieren, algo ''sucedió'' causó un cambio en el código.

Este enfoque ahorra mucho tiempo y permite comparaciones personalizadas cuando sea necesario.


Creo que si estás refaccionando tus pruebas para reducir la duplicación, terminas creando tu propio framework como subproducto y, por supuesto, tu marco de prueba tendrá ayudantes de confirmación que tengan sentido en tu contexto.

Un ejemplo que tengo en mente fue cuando probamos el informe xhtml y terminamos con pruebas que se parecían a las siguientes:

assertCoverageEquals(45.5);

donde detrás afirmar la cobertura era algo así como:

assertPercentage(COVERAGE_ID, 45.5);

y detrás de eso fue algo que usó xpath para obtener el valor y otro método que sabía cuál era el formato para los porcentajes.


Esa es mi solución:

using MyStuff; using A = Microsoft.VisualStudio.TestTools.UnitTesting.Assert; namespace Mytestproj.Tests { public static class Assert { public static void AreEqual(object expected, object actual) { A.AreEqual(expected, actual); } // my extension public static void AreEqual(MyEnum expected, int actual) { A.AreEqual((int)expected, actual); } public static void IsTrue(bool o) { A.IsTrue(o); } public static void IsFalse(bool o) { A.IsFalse(o); } public static void AreNotEqual(object notExpected, object actual) { A.AreNotEqual(notExpected, actual); } public static void IsNotNull(object o) { A.IsNotNull(o); } public static void IsNull(object o) { A.IsNull(o); } } }


Acabo de agregar una implementación a ImageAssert como escribí anteriormente (en mi pregunta) Me gustaría escuchar más de ese tipo de muestras