2010-11-18 13 views
8

estoy escribiendo métodos de extensión para los valores de prueba para mi unidad de prueba. Un ejemplo trivial sería:Cómo crear personalizados MSTest con aserciones métodos con pila de llamadas "adecuada"

Y su uso en una prueba:

someBool.ShouldBeTrue(); 

Todo funciona, excepto que la línea de lanzamiento excepción será el termino cuando haga doble clic en el prueba fallida en la ventana Resultados de la prueba, y en Detalles del resultado de la prueba la línea de proyección se muestra en el Rastreo de pila de error.

¿Hay una manera alrededor de esto, por lo que "someBool.ShouldBeTrue();":

  1. es la línea que haga doble clic en el ensayo de fracasar en la prueba Resultados Se abre la ventana?
  2. es la única línea en el seguimiento de pila?
+0

Si está haciendo esto, puede echar un vistazo a este proyecto: http://fluentassertions.codeplex.com/. – Steven

Respuesta

1

Creo que encontré la respuesta. Todo lo que necesita hacer es poner sus clases/métodos de aserción personalizados en un ensamblaje separado. Puede tener esto como un proyecto separado en la misma solución, si lo desea.

+0

Podría haber jurado que tenía mis métodos de afirmación personalizados en un conjunto por separado cuando escribí esta pregunta. Sin embargo, cuando intento ahora, todo funciona como se espera.Mis proyectos de prueba hacen referencia a un dll que contiene los métodos de aserción y cuando falla una prueba 1 (en mi pregunta original) se cumple. 2 no lo es, pero está bien. Gracias – hcanber

+1

Asegúrese de que no haya un archivo .pdb para el ensamblaje por separado. – hcanber

2

Hay una biblioteca de clases ya escrito para ello: http://geekswithblogs.net/sdorman/archive/2009/01/31/adding-custom-assertions-to-mstest.aspx

Hay una cita desde el enlace anterior:

... Como referencia, los Afirma disponible son:

  • Assert .IsNaN
  • Assert.IsEmpty
  • Assert.IsNotEmpty
  • Assert.Greater
  • Assert.GreaterOrEqual
  • Assert.Less
  • Assert.LessOrEqual
  • Assert.IsAssignableFrom
  • Assert.IsNotAssignableFrom
  • CollectionAssert.IsEmpty
  • CollectionAssert.IsNotEmpty
  • StringAssert.AreEqualIgnoringCase
  • StringAssert.IsMatch
  • FileAssert.AreEqual
  • FileAssert.AreNotEqual

... He creado una biblioteca de clases que incluye todos ellos, excepto los métodos FileAssert y StringAssert.IsMatch. ... Puede descargar la clase desde mi carpeta pública SkyDrive: https://skydrive.live.com/?cid=93d618d639ec9651&id=93D618D639EC9651%211283

Cuestiones relacionadas