Visual Studio Test может проверять ожидаемые исключения с использованием атрибута ExpectedException. Вы можете передать в виде исключения, как это:Как я могу проверить ожидаемое исключение с конкретным сообщением об исключении из файла ресурсов в Visual Studio Test?
[TestMethod]
[ExpectedException(typeof(CriticalException))]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
Вы также можете проверить для сообщения, содержащегося в ExpectedException, как это:
[TestMethod]
[ExpectedException(typeof(CriticalException), "An error occured")]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
Но при тестировании I18N приложения Я хотел бы использовать файл ресурсов, чтобы получить что сообщение об ошибке (любой может даже решить, чтобы проверить различные локализации сообщения об ошибке, если я хочу, но Visual Studio не позволит мне сделать это:
[TestMethod]
[ExpectedException(typeof(CriticalException), MyRes.MultipleOrganisationsNotAllowed)]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
compil er сообщит следующую ошибку:
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute
Кто-нибудь знает, как протестировать исключение, содержащее сообщение из файла ресурсов?
Один из вариантов я рассматривал это с помощью пользовательских классов исключений, но на основе часто слышал советы, такие как:
"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
Я не ожидал, чтобы обрабатывать исключения по-разному в нормальном потоке (это критическое исключение, поэтому я все равно попаду в панический режим), и я не думаю, что создание исключения для каждого тестового примера - это правильная вещь. Любые мнения?
Параметр сообщение не get проверяется на сообщение об исключении. – 2009-10-08 16:55:21