Duplicar posible:
How do I test an async method with NUnit, eventually with another framework?¿Cómo puedo afirmar que un método asíncrono C# arroja una excepción en una prueba unitaria?
lo que me gustaría saber es cómo puedo afirmar que un método asíncrono lanza una excepción, en una unidad de prueba de C#? Puedo escribir pruebas unitarias asíncronas con Microsoft.VisualStudio.TestTools.UnitTesting
en Visual Studio 2012, pero no he descubierto cómo probar excepciones. Sé que xUnit.net también admite métodos de prueba asíncronos de esta manera, aunque todavía no he probado ese framework.
Para un ejemplo de lo que quiero decir, el siguiente código define el sistema bajo prueba:
using System;
using System.Threading.Tasks;
public class AsyncClass
{
public AsyncClass() { }
public Task<int> GetIntAsync()
{
throw new NotImplementedException();
}
}
Este fragmento de código define una prueba TestGetIntAsync
para AsyncClass.GetIntAsync
. Aquí es donde necesito de entrada sobre cómo lograr la afirmación de que GetIntAsync
se emite una excepción:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Threading.Tasks;
[TestClass]
public class TestAsyncClass
{
[TestMethod]
public async Task TestGetIntAsync()
{
var obj = new AsyncClass();
// How do I assert that an exception is thrown?
var rslt = await obj.GetIntAsync();
}
}
dude en emplear algún otro marco de unidad de prueba relevante que el Visual Studio uno, como xUnit.net, si es necesario o usted diría que es una mejor opción.
@JonSkeet En realidad no, ya que esto es específicamente sobre la comprobación de excepciones. Aunque ahora lo veo, no hay diferencia con el marco de Visual Studio. Para xUnit.net, sin embargo, todavía no estoy seguro de cómo hacerlo. – aknuds1
@JonSkeet Inicialmente acepté, pero ahora no. Si esta pregunta es correcta porque las pruebas unitarias de Microsoft ya son compatibles con las pruebas asíncronas, su respuesta a esa otra pregunta no se aplica realmente aquí. El único problema es reescribir la prueba de tal manera que pruebe una excepción. – hvd
@hvd: En ese caso, parece que el problema * no tiene nada que ver con la asincronía. Sin duda, las respuestas dadas realmente no dependen de la parte asíncrona. –