Estoy usando Microsoft WebTest y quiero poder hacer algo similar a Assert.Fail()
de NUnit. Lo mejor que se me ocurre es throw new webTestException()
, pero esto se muestra en los resultados de la prueba como Error
en lugar de Failure
.¿Cómo puedo reprobar una prueba web?
Aparte de reflejar en el WebTest
para establecer una variable de miembro privado para indicar el error, ¿hay algo que he omitido?
EDITAR: También he usado el método Assert.Fail()
, pero esto todavía aparece como un error en lugar de una falla cuando se usa desde WebTest, y la propiedad Outcome
es de solo lectura (no tiene un setter público).
EDITAR: bueno, ahora estoy realmente perplejo. Utilicé el reflejo para configurar la propiedad Outcome
en Failed pero la prueba todavía pasa.
Aquí está el código que establece la Oucome a fallado:
public static class WebTestExtensions
{
public static void Fail(this WebTest test)
{
var method = test.GetType().GetMethod("set_Outcome", BindingFlags.NonPublic | BindingFlags.Instance);
method.Invoke(test, new object[] {Outcome.Fail});
}
}
y aquí está el código que estoy tratando de fallar:
public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
this.Fail();
yield return new WebTestRequest("http://google.com");
}
Outcome
es conseguir crear a Oucome.Fail
pero al parecer el WebTest framework realmente no usa esto para determinar los resultados de aprobación/falla de prueba.
debería haber sido más clara ... que tenía Ya probé ambos. (pregunta editada para reflejar esto) – craigb
[Microsoft.VisualStudio.QualityTools.WebTestFramework, Version = 9.0.0.0] Microsoft.VisualStudio.TestTools.WebTesting.WebTest.set_Outcome (Microsoft.VisualStudio.TestTools.WebTesting.Outcome value) es público –
No de acuerdo con el dll que estoy usando. Oucome es un comprador público, pero no hay un organismo público. Utilicé el reflejo para cal el set_Outcome (que es privado) pero aún no tiene efecto en el resultado de la prueba (es decir, hasta que no falla) – craigb