2011-12-14 9 views
7

He estado usando NUnit por un tiempo, y he estado derivando mis clases de prueba de AssertionHelper. Al hacer esto, mis pruebas utilizan una sintaxis como:¿Hay alguna razón para no usar AssertionHelper con NUnit?

Expect(myValue, Is.EqualTo(3), "value wasn't equal to 3"); 

en lugar de:

Assert.That(myValue, Is.EqualTo(3), "value wasn't equal to 3"); 

Casi todos los ejemplos con NUnit que veo utiliza Assert.That() sintaxis, pero parece que Expect() tiene más sentido (por lo menos para mí) ya que estoy esperando un cierto comportamiento de mi código.

¿Hay alguna desventaja de usar AssertionHelper con NUnit, o se trata realmente de una cuestión de gusto/estilo?

¡Gracias de antemano!

Respuesta

5

Ambos haciendo lo mismo y ambos le permite especificar una restricción personalizada que implementa la interfaz IConstraint. Desde mi punto de vista Assert() es un poco liviano ya que no te obliga a heredar todos los accesorios de prueba de una clase especial.

0

Debido a la forma en que el nombre de mi las variables, mis pruebas a menudo terminan con la línea:

Assert.That(actual, Is.EqualTo(expected)); 

cuales la OMI lee mejor (más fluido) que

Expect(actual, Is.EqualTo(expected)); 
1

El principal problema con AssertionHelper es que muy pocas personas lo usan, por lo que las nuevas características y restricciones de NUnit tienden a no agregarse. Debido a que se descuida y no se usa ampliamente, el NUnit team is considering removing it lo convierte en un paquete separado.

El equipo está buscando comentarios de la comunidad sobre si eliminar o no, así que no dude en comentar sobre el problema.

0

Rob Prouse tiene razón en que el equipo NUnit está desaprobando AssertionHelper. Lo había estado utilizando durante aproximadamente 8 meses cuando descubrí que estaba obsoleto en una actualización y me ofrecí a mantenerlo. La discusión sobre eso fue muy lenta y estaba un poco impaciente, así que escribí NUnit.StaticExpect que está en Nuget y ofrece un reemplazo directo para AssertionHelper, con una importación "estática" en su código. Le cambié un proyecto de producción y está funcionando bien.

También empecé a alrededor de ese tiempo en un camino diferente: NExpect que ofrece una sintaxis que recuerda más a Chai pero con más extensibilidad similar a Jasmine. NExpect está en un buen estado de uso, lo he estado utilizando en mis propios proyectos desde hace un tiempo. Hay una demo project que se puede utilizar para observar la evolución de las afirmaciones a través de:.

  1. Assert {} método específico (por ejemplo Assert.AreEqual)
  2. Assert.That ({valor o lambda}, {corriente tensa restricción})
  3. uso AssertionHelper uso
  4. NUnit.StaticExpect uso
  5. NExpect

además de dar un ejemplo de t La extensibilidad de NExpect. Espero que esto ayude.

Cuestiones relacionadas