Voy a comenzar un nuevo proyecto en el trabajo y quiero entrar en pruebas unitarias. Usaremos VS 2008, C # y el material ASP.NET MVC. Estoy buscando usar NUnit o los proyectos de prueba integrados que tiene VS2008, pero estoy abierto a investigar otras sugerencias. ¿Es un sistema mejor que el otro o quizás más fácil de usar / entender que el otro? Estoy buscando configurar este proyecto como una especie de "mejor práctica" para nuestros esfuerzos de desarrollo en el futuro.
¡¡Gracias por cualquier ayuda y sugerencias!!
c#
asp.net-mvc
visual-studio-2008
unit-testing
nunit
Ryan Skarin
fuente
fuente
El marco de pruebas unitarias en realidad no importa mucho, porque puede convertir clases de prueba con archivos de proyecto separados y compilación condicional (como esta, VS-> NUnit):
El complemento TestDriven.Net es agradable y no muy costoso ... Con solo VS2008 simple, debe encontrar la prueba de su clase de prueba o lista de pruebas. Con TestDriven.Net puede ejecutar su prueba directamente desde la clase que está probando. Después de todo, la prueba unitaria debería ser fácil de mantener y estar cerca del desarrollador.
fuente
Beneficios / cambios del marco de prueba de unidad incorporado VS2008
fuente
He estado usando NUnit durante 2 años. Todo está bien, pero tengo que decir que el sistema de la Unidad en VS es bastante bueno porque está dentro de la interfaz gráfica de usuario y puede hacer más fácilmente la prueba de función privada sin tener que perder el tiempo. Además, la Prueba de Unidad de VS le permite cubrir y otras cosas que NUnit por sí sola no puede hacer.
fuente
Una ligera molestia del marco de prueba de Visual Studio es que creará muchos archivos de ejecución de prueba que tienden a saturar el directorio de su proyecto, aunque esto no es un gran problema.
Además, si carece de un complemento como TestDriven.NET, no puede depurar sus pruebas unitarias NUnit (o MbUnit, xUnit, etc.) dentro del entorno de Visual Studio, como puede hacerlo con el marco de prueba de Microsoft VS, que está integrado.
fuente
Ligeramente fuera de tema, pero si usa NUnit, puedo recomendarle usar ReSharper : agrega algunos botones a la interfaz de usuario de VS que hacen que sea mucho más fácil ejecutar y depurar pruebas desde el IDE.
Esta revisión está un poco desactualizada, pero lo explica con más detalle:
http://codebetter.com/blogs/paul.laudeman/archive/2006/08/15/Using-ReSharper-as-an-essential-part-of-your-TDD-toolkit.aspx
fuente
XUnit es otra posibilidad para un proyecto greenfield. Quizás tenga una sintaxis más intuitiva, pero no es realmente compatible con los otros marcos.
http://www.codeplex.com/xunit
fuente
Mi principal problema con las pruebas de unidades VS sobre NUnit es que la creación de pruebas VS tiende a inyectar un montón de código generado para el acceso de miembros privados.
Algunos podrían querer probar sus métodos privados, otros no, ese es un tema diferente.
Mi preocupación es que cuando escribo pruebas unitarias, deben estar extremadamente controladas para que sepa exactamente qué estoy probando y cómo lo estoy probando. Si hay código generado automáticamente, estoy perdiendo parte de esa propiedad.
fuente
He hecho algo de TDD usando ambos y (quizás soy un poco tonto) nUnit parece ser mucho más rápido y fácil de usar para mí. Y cuando digo mucho, quiero decir mucho.
En MS Test, hay demasiados atributos en todas partes: el código que hace las pruebas reales son las pequeñas líneas que puede leer aquí y allá. Un gran desastre. En nUnit, el código que realiza la prueba simplemente domina los atributos, como debería hacerlo.
Además, en nUnit, solo tiene que hacer clic en las pruebas que desea ejecutar (¿solo una? Todas las pruebas que cubren una clase? Un ensamblaje? La solución?). Un click. Y la ventana es clara y grande. Obtienes luces verdes y rojas claras. Realmente sabes lo que sucede en una vista.
En VSTS, la lista de prueba está atascada en la parte inferior de la pantalla, es pequeña y fea. Tienes que mirar dos veces para saber qué pasó. Y no puede ejecutar una sola prueba (bueno, ¡todavía no lo descubrí!).
Pero puedo estar equivocado, por supuesto, acabo de leer sobre 21 publicaciones de blog sobre "Cómo hacer TDD simple usando VSTS". Debería haber leído más, tienes razón.
Para nUnit, leí uno. Y estaba TDDing el mismo día. Con diversion.
Por cierto, generalmente me encantan los productos de Microsoft. Visual Studio es realmente la mejor herramienta que un desarrollador puede comprar, pero TDD y la gestión de elementos de trabajo en Visual Studio Team System son realmente malos.
Todo lo mejor. Sylvain
fuente
Recibí mensajes de que "la estructura de archivos NUnit es más rica que VSTest" ... Por supuesto, si prefiere la estructura de archivos NUnit, puede usar esta solución de la otra manera, de esta manera (NUnit-> VS):
O cualquier otra conversión ... :-) Este uso aquí es solo un alias para el compilador.
fuente
Primero quiero corregir una declaración incorrecta: puede ejecutar msTest fuera de Visual Studio usando la línea de comandos. Aunque varias herramientas de CI como TeamCity tienen un mejor soporte para NUnit (probablemente cambiaría a medida que msTest se vuelva más popular). En mi proyecto actual utilizamos ambos y la única gran diferencia que encontramos es que mstest siempre se ejecuta como 32 bits, mientras que NUnit se ejecuta como prueba de 32 bits o 64 bits, lo que solo importa si su código usa código nativo que depende de 32/64.
fuente
Comencé con MSTest pero cambié por una simple razón. MSTest no admite la herencia de métodos de prueba de otros ensamblados.
Odiaba la idea de escribir la misma prueba varias veces. Especialmente en un proyecto grande donde los métodos de prueba pueden ejecutarse fácilmente en cientos de pruebas.
NUnit hace exactamente lo que necesito. Lo único que falta con NUnit es un complemento de Visual Studio que puede mostrar el estado Rojo / Verde (como VSTS) de cada prueba.
fuente
Consejos de .NET Testing Framework y paquetes de pruebas de unidades .NET? .
fuente
Si está considerando MSTest o nUnit, le recomiendo que mire mbUnit. Mis razones son
Originalmente elegí mbUnit debido a su funcionalidad [RowTest ....], y no he encontrado una sola razón para regresar. Moví todas mis suites de prueba activas desde nUnit, y nunca miré hacia atrás. Desde entonces, he convertido dos equipos de desarrollo diferentes en beneficios.
fuente
Hasta donde sé, hay cuatro marcos disponibles para pruebas unitarias con .NET en estos días.
NUnit siempre ha estado al frente, pero la brecha se ha cerrado en el último año más o menos. Todavía prefiero NUnit, especialmente porque agregaron una interfaz fluida hace un tiempo, lo que hace que las pruebas sean muy legibles.
Si recién está comenzando con las pruebas unitarias, probablemente no haga mucha diferencia. Una vez que esté al día, estará en una mejor posición para juzgar qué marco es el mejor para sus necesidades.
fuente
No me gusta el marco de prueba incorporado de VS porque te obliga a crear un proyecto separado en lugar de tener tus pruebas como parte del proyecto que estás probando.
fuente
MSTest es esencialmente NUnit ligeramente reelaborado, con algunas características nuevas (como la configuración del ensamblaje y el desmontaje, no solo el accesorio y el nivel de prueba), y falta algunos de los mejores bits (como la nueva sintaxis de restricción 2.4). NUnit es más maduro, y otros proveedores lo apoyan más; y, por supuesto, dado que siempre ha sido gratuito (mientras que MSTest solo llegó a la versión Profesional de 2008, antes era SKU mucho más costoso), la mayoría de los proyectos de ALT.NET lo usan.
Dicho esto, hay algunas compañías que son increíblemente reacias a usar algo que no tiene la etiqueta de Microsoft, y especialmente el código OSS. Por lo tanto, tener un marco de prueba oficial de MS puede ser la motivación que esas compañías necesitan para hacerse la prueba; y seamos honestos, lo importante es la prueba, no la herramienta que usas (y usando el código de Tuomas Hietanen anterior, casi puedes hacer que tu marco de prueba sea intercambiable).
fuente
SetUp
yTearDown
atributos: jamesnewkirk.typepad.com/posts/2007/09/why-you-should-.htmlCon el lanzamiento en .NET 4.0 del sistema de contratos de código y la disponibilidad de un verificador estático , en teoría necesitaría escribir menos casos de prueba y una herramienta como Pex ayudará a identificar esos casos. Relacionando esto con la discusión en cuestión, si necesita hacer menos con sus pruebas unitarias porque sus contratos están cubriendo su cola, entonces ¿por qué no simplemente seguir adelante y usar las piezas integradas ya que esa es una dependencia menos para administrar? En estos días, todo se trata de simplicidad. :-)
Ver también:
fuente
Preferiría usar el pequeño marco de prueba de MS, pero por ahora me quedo con NUnit. Los problemas con la EM son generalmente (para mí)
Advertencias: si estuviera probando un sitio aspx, lo haría definitivamente usaría MS's - Si estuviera desarrollando solo, también MS estaría bien - Si tuviera una habilidad limitada y no pudiera configurar NUnit :)
Me resulta mucho más fácil simplemente escribir mis pruebas y activar NUnitGUI o uno de los otros extremos (testDriven es muy, muy, muy caro). Configurar la depuración con la versión de línea de comandos también es bastante fácil.
fuente