2008-12-04 14 views
13

Sabemos que Python proporciona mucha productividad sobre cualquier lenguaje compilado. Tenemos la programación en C# & necesidad de escribir los casos de prueba unitarios en C#. Si vemos que la cantidad de código que escribimos para la prueba unitaria es aproximadamente diez veces más que el código original.IronPython para pruebas unitarias sobre C#

¿Es la elección ideal para escribir casos de prueba de unidad en IronPython en lugar de C#? ¿Algún cuerpo ha hecho así? Escribí algunos casos de prueba, parecen ser buenos. Pero los administradores peludos puntiagudos no aceptarán.

+0

su PHBoss .. su versión simplemente inclinó la balanza :) – Gishu

+2

"gestores puntiagudos Hairy" es una gran frase! – babbageclunk

+0

¡De todos modos, podemos echar un vistazo a esas pruebas o pruebas demo en IronPython! – azamsharp

Respuesta

4

La respuesta de Will es buena: está presentando un nuevo requisito para los desarrolladores.

Además, ¿cómo es el soporte de herramientas? No he intentado nada de esto yo mismo, pero me gustaría saber:

  • ¿Qué tan fácil es depurar en las pruebas de la unidad que falla?
  • ¿Cuán fácil es ejecutar pruebas unitarias desde el IDE? (por ejemplo, con ReSharper)
  • ¿Qué tan fácil es automatizar las pruebas de la unidad desde un servidor de compilación continua?

Podría ser que todo esto esté bien, pero debe verificarlos y documentar los resultados.

Hay otras opciones, así como IronPython, por supuesto - Boo es una opción bastante obvia.

2

Existe una desventaja evidente que es que todos los que trabajan en el código ahora necesitan dominar dos idiomas, no solo uno. Soy bastante peludo pero no muy puntiagudo, pero entiendo por qué los gerentes pueden ser escépticos.

+0

No veo cómo IronPython puntúa más de C# para pruebas unitarias ... y cómo el salto de productividad escalará para todo el equipo del OP ... pero es una decisión de equipo ... si todos están de acuerdo y los beneficios son evidentes ... vaya Adelante. – Gishu

+0

Bueno, ¿la mayoría de los programadores ya no están acostumbrados a usar varios idiomas en el trabajo? (por ejemplo, C#, SQL, JavaScript, HTML, etc.) Me preocuparía más un taller de desarrollo que emplee desarrolladores que solo conozcan y utilicen un idioma para todo. –

3

Python es un lenguaje mucho menos detallado que C# en realidad podría reducir la barrera a las pruebas de unidades de escritura, ya que todavía hay muchos desarrolladores que son resistentes a hacer pruebas unitarias automáticas en general. Introducirlas y hacer que usen un lenguaje como IronPython que generalmente toma menos tiempo para escribir el código equivalente en C# podría animar a que se escriban más pruebas unitarias, lo que siempre es bueno.

Además, al usar IronPython para el código de prueba, puede terminar con menos líneas de código (LOC) para el proyecto, lo que significa que es más probable que se mantengan las pruebas unitarias en lugar de ignorarlas o ignorarlas/o descartado

0

Muy interesante.

¿Qué pasaría si escribe todo su código con IronPython (no solo las pruebas unitarias)? ¿Acabarías con aproximadamente 10 veces menos código?

Quizás debería aprender IronPython también.

+0

C# es compilado y rápido, pero IronPython por lo general se ralentiza. – Krish

3

En realidad, las pruebas son una gran oportunidad para tratar de integrar un nuevo idioma. Los lenguajes como Python brillan especialmente bien en las pruebas, y es un proyecto de bajo riesgo para probar; el peor de los casos no es para nada malo.

En cuanto a la experiencia de probar otro idioma en Python, he probado sistemas C y C++ como este y fue excelente. Creo que definitivamente vale la pena intentarlo.

Lo que Jon dice es verdad, sin embargo, el nivel de herramientas para Python en general, e IronPython en particular, no es ni cerca de C#.Cuánto te afecta es algo que descubrirás en tu piloto.

6

Python es excelente para el código UnitTesting C#. Nuestra aplicación es 75% en Python y 25% C# (Python.Net), y nuestras pruebas unitarias son 100% python.

Encuentro que es mucho más fácil hacer uso de trozos y burlas en Python, que es probablemente uno de los componentes más importantes que permiten escribir pruebas de unidad efectivas.

0

tengo que ir con Will y Jon ..

yo preferiría mis pruebas de estar en el mismo idioma que el código que estoy probando; Causa menos cambios de contexto cognitivo. Pero tal vez no soy tan mentalmente ágil como una vez fui.

  • Jon
1

He estado recientemente re-evaluación de mis actitudes de prueba después de descubrir las pruebas parametrizado en mbUnit y NUnit. Anteriormente, recomendé Python unittest como una forma de automatizar cualquier prueba posible, debido a la naturaleza concisa y la capacidad de descubrimiento de las pruebas.

Las pruebas parametrizadas le permiten personalizar los dispositivos de prueba con un rango de parámetros de datos y, por lo tanto, sus pruebas de C# pueden llegar a ser incluso más concisas que las pruebas de Python.

[TestCase(12, 3, 4)] 
[TestCase(12, 2, 6)] 
[TestCase(12, 4, 3)] 
[TestCase(12, 0, 0, ExpectedException = typeof(System.DivideByZeroException), 
     TestName = “DivisionByZeroThrowsExceptionType”)] 
[TestCase(12, 0, 0, ExpectedExceptionName = “System.DivideByZeroException”, 
     TestName = “DivisionByZeroThrowsNamedException”)] 
public void IntegerDivisionWithResultPassedToTest(int n, int d, int q) 
{ 
     Assert.AreEqual(q, n/d); 
}