Como posso testar uma exceção esperada com uma mensagem de exceção específica de um arquivo de recurso no Visual Studio Test?

O Visual Studio Test pode verificar exceções esperadas usando o atributo ExpectedException. Você pode passar uma exceção como esta:

[TestMethod]
[ExpectedException(typeof(CriticalException))]
public void GetOrganisation_MultipleOrganisations_ThrowsException()

Você também pode verificar a mensagem contida na ExpectedException desta forma:

[TestMethod]
[ExpectedException(typeof(CriticalException), "An error occured")]
public void GetOrganisation_MultipleOrganisations_ThrowsException()

Mas ao testar aplicativos I18N eu usaria um arquivo de recursos para obter essa mensagem de erro (qualquer um pode até decidir testar as diferentes localizações da mensagem de erro, se eu quiser, mas o Visual Studio não me permite fazer isso:

[TestMethod]
[ExpectedException(typeof(CriticalException), MyRes.MultipleOrganisationsNotAllowed)]
public void GetOrganisation_MultipleOrganisations_ThrowsException()

O compilador dará o seguinte erro:

Um argumento de atributo deve ser uma expressão constante, tipo de expressão ou expressão de criação de matriz de um atributo

Alguém sabe como testar uma exceção que tenha uma mensagem de um arquivo de recurso?

Uma opção que considerei é usar classes de exceção personalizadas, mas com base em conselhos frequentemente ouvidos, como:

"Crie e lance exceções personalizadas se você tiver uma condição de erro que possa ser manipulada de forma diferente de qualquer outra exceção existente. Caso contrário, ative uma das exceções existentes."Fonte

Eu não estou esperando para lidar com as exceções de forma diferente no fluxo normal (é uma exceção crítica, então eu estou entrando no modo de pânico de qualquer maneira) e eu não acho que criar uma exceção para cada caso de teste é a coisa certa a fazer. Alguma opinião?

questionAnswers(7)

yourAnswerToTheQuestion