visual unitarias unitaria unit test studio pruebas prueba hacer como casos automatizadas c# visual-studio unit-testing nunit

unitarias - unit test c# visual studio 2013



Prueba de unidad, NUnit o Visual Studio? (9)

Estoy usando Visual Studio (a veces, reafilado) para ejecutar mi prueba unitaria.

Escuché sobre NUnit, pero no sé muchas cosas al respecto ...

¿Debería importarme? ¿Puede ofrecer algo mejor que Visual Studio?

¿Debo usar NUnit y por qué?


Aquí está mi experiencia con MS Test

  • Estamos ejecutando MS Test con alrededor de 3800 Test.
  • Lleva mucho tiempo para que las pruebas comiencen a ejecutarse, lo cual es doloroso cuando se ejecutan pruebas individuales.
  • Se necesita alrededor de 1GB de memoria para ejecutar las pruebas. No, no se debe a fugas de memoria en nuestras pruebas. Con frecuencia nos encontramos con OutOfMemoryExceptions.
  • Debido a que usa ese recurso, estamos empezando a ejecutar las pruebas desde archivos de proceso por lotes. Entonces, ¿para qué sirve la integración?
  • Es con errores e inestable:
    • Por ejemplo, si elimina el atributo [Ignorar] de una prueba, no lo reconoce porque almacena en caché información sobre pruebas en algún lugar. Debe actualizar la lista de prueba, que a veces resuelve el problema, o reiniciar VS.
    • No copia al azar los ensamblados de referencia en el directorio de salida.
    • Los elementos de implementación (archivos adicionales que se utilizarán) simplemente no funcionan correctamente. Ellos son ignorados al azar.
  • Hay información oculta (no visible en el código de prueba) en los archivos vsmdi y testrunconfig. Si no te importa, puede que no funcione.
  • Funcionalmente podría ser comparable a NUnit, pero es muy costoso si considera usar VS tester edition.

Además: tenemos algunas pruebas más ahora, ni siquiera podemos decir cuántas. Es imposible ejecutarlos todos más desde Visual Studio, debido a OutOfMemoryExceptions y otros problemas de inestabilidad. Ejecutamos las pruebas desde scripts. Sería fácil ver los resultados de las pruebas en Visual Studio, pero cuando la solución está abierta, VS se bloquea (todas las veces). Entonces, necesitamos buscar las pruebas fallidas usando la búsqueda de texto. Ya no hay ventaja de una herramienta integrada.

Otra actualización : estamos usando VS 2013 ahora. Muchas cosas cambiaron Reescribieron el corredor de prueba de MS Test por tercera vez desde que comenzamos. Esto causó muchos cambios bruscos, pero ninguna versión nueva estaba haciendo algo mejor. Estamos contentos de no haber usado las características sofisticadas de MS Test, porque ya no son compatibles. Es realmente una pena Todavía estamos usando scripts para construir y ejecutar todas las pruebas unitarias, porque es más práctico. Visual Studio requirió unos minutos para comenzar a ejecutar las pruebas (el tiempo se mide después de la compilación hasta que se inicia la primera prueba). Probablemente lo arregle con una actualización y este podría ser un problema específico de nuestro proyecto. Sin embargo, Resharper es mucho más rápido cuando se ejecutan las mismas pruebas.

Conclusión : Al menos en combinación con Resharper, MS Test es útil. Y espero que finalmente descubran cómo debe escribirse el corrector de prueba y no harán este tipo de cambios cuando actualicemos Visual Studio la próxima vez.


Desde mi perspectiva actual (después de 8 meses de desarrollo con aproximadamente 10 desarrolladores en promedio), desaconsejaría usar MSTest por las siguientes razones

  • El marco en sí mismo es bastante lento. No me refiero al código de prueba que escribes, eso está bajo tu control. Me refiero a que el marco que ejecuta esas pruebas es lento, ya sea que esté ejecutando un conjunto de pruebas, pruebas individuales, etc.
  • La necesidad de mantener un archivo Test-Metadata que siempre genera complicaciones cuando varios desarrolladores están trabajando en él (recreando, por ejemplo, los metadatos, etc.). Todos los demás conjuntos de pruebas no necesitan un archivo de metadatos. Es agradable organizar tus pruebas, pero puedes lograr lo mismo a través de espacios de nombres, clases y nombres de métodos.
  • Si realiza la integración continua, si desea ejecutar pruebas unitarias en su máquina de compilación, deberá instalar Visual Studio en esa máquina.

En otras palabras, si tuviera que decidir de nuevo hace 8 meses, probablemente tomaría NUnit. Puede que no tenga el informe de resultados de prueba integrados, pero los desarrolladores tendrían una experiencia de prueba más perfecta.


La mayor ventaja de MS-Test sobre NUnit es que MS-Test puede generar objetos simulados utilizando Reflection. Lo encontré muy útil


NUnit es un marco de prueba unitario, que también es compatible con el reafilado. Creo que está utilizando el marco de pruebas unitarias de Microsoft, por lo que NUnit es solo una alternativa al producto de Microsoft;)

Aquí está el enlace a la página de inicio de NUnit: http://nunit.org/index.php


NUnit funciona con la edición estándar de VS.


NUnit se puede usar en combinación con Visual Studio. Es un marco, no un programa separado. Así que podrías importarte si te parece :)

texto alternativo http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=nunitit&DownloadId=61802

"Después de instalar el complemento, encontrará un nuevo submenú en el menú de herramientas".

Consulte http://nunitit.codeplex.com/ para obtener más información sobre cómo importarlo.

Además, se puede encontrar mucho utilizando la búsqueda de SO. Este tema enumera las ventajas de NUnit en comparación con las pruebas estándar de MS, por ejemplo.


NUnit tiene pocas ventajas sobre MS-Test

  1. Atributo Suite: puede agregar pruebas y ejecutarlas por separado (útil para proyectos grandes con pruebas rápidas y lentas, por ejemplo)
  2. Método de Assert.AreEqual(expected, actual) , por ejemplo, Assert.AreEqual(expected, actual) vs Assert.That(actual, Is.EqualTo(expected))
  3. NUnit tiene actualizaciones frecuentes de versiones: MS-Test solo tiene una por versión VS.
  4. Muchos corredores integrados, incluidos Resharper y TestDriven.NET
  5. Aserción del mensaje de excepción esperado: se puede hacer usando el atributo en NUnit, pero se debe hacer usando Try-Catch en MS-Test
  6. [TestCase] ! NUnit permite pruebas parametrizadas.

No estoy seguro de los demás, pero NUnit ofrece una buena GUI y consola para ejecutar sus Pruebas Unitarias y también puede generar un informe del resultado de la ejecución de la Prueba NUnit que daría los detalles de cuándo la prueba ha fallado o pasado y también a qué hora lo hizo tomar para su prueba de unidad


Si está usando Visual Studio, debe usar NUnit para realizar la prueba unitaria, y si está ejecutando java (Netbeans), debe usar JUnit para la prueba unitaria.

Aquí hay un ejemplo para una simple prueba de unidad de calculadora

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SimpleCalculator; using NUnit.Framework; namespace CalculatorTest { [TestFixture] public class Class1 { public Calculator _calculator; [TestFixtureSetUp] public void Initialize() { _calculator = new Calculator(); } [Test] public void DivideTest() { int a = 10; int b = 2; int expectedValue = a / b; int actualvalue = _calculator.Divide(a, b); Assert.AreEqual(expectedValue, actualvalue,"Failure"); } } }