Visual Studio Test puede verificar excepciones esperadas utilizando el atributo ExpectedException. Puede pasar de una excepción de esta manera:¿Cómo puedo probar una excepción esperada con un mensaje de excepción específico de un archivo de recursos en Visual Studio Test?
[TestMethod]
[ExpectedException(typeof(CriticalException))]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
También puede comprobar si el mensaje contenido en el ExpectedException así:
[TestMethod]
[ExpectedException(typeof(CriticalException), "An error occured")]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
Pero al probar aplicaciones I18N me gustaría utilizar un archivo de recursos para obtener ese mensaje de error (cualquier puede incluso decidir poner a prueba las diferentes localizaciones del mensaje de error si quiero, pero Visual Studio no me deja hacer esto:
[TestMethod]
[ExpectedException(typeof(CriticalException), MyRes.MultipleOrganisationsNotAllowed)]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
la compil er dará el siguiente error:
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute
¿Alguien sabe cómo probar una excepción que tiene un mensaje de un archivo de recursos?
Una de las opciones que he considerado es el uso de clases de excepción personalizada, pero basado en el asesoramiento a menudo se escucha como:
"Do create and throw custom exceptions if you have an error condition that can be programmatically handled in a different way than any other existing exception. Otherwise, throw one of the existing exceptions." Source
No estoy esperando para manejar las excepciones de manera diferente en el flujo normal (que es una excepción crítica, así que entraré en modo de pánico de todos modos) y no creo que crear una excepción para cada caso de prueba sea lo correcto. Alguna opinion?
El parámetro mensaje no verifica contra el mensaje de la excepción lanzada. –