W jaki sposób można przetestować oczekiwany wyjątek z określonym komunikatem wyjątku z pliku zasobów w programie Visual Studio Test?

Visual Studio Test może sprawdzać oczekiwane wyjątki za pomocą atrybutu ExpectedException. Możesz przekazać wyjątek taki jak ten:

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

Możesz również sprawdzić wiadomość zawartą w ExpectedException w następujący sposób:

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

Ale podczas testowania aplikacji I18N używałbym pliku zasobów, aby uzyskać ten komunikat o błędzie (każdy może nawet zdecydować się na przetestowanie różnych lokalizacji komunikatu o błędzie, jeśli chcę, ale Visual Studio nie pozwoli mi tego zrobić:

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

Kompilator poda następujący błąd:

Argument atrybutu musi być stałym wyrażeniem, typem wyrażenia lub wyrażeniem tworzenia tablicy atrybutu

Czy ktoś wie jak przetestować wyjątek, który ma wiadomość z pliku zasobów?

Jedną z rozważanych przeze mnie opcji jest użycie niestandardowych klas wyjątków, ale w oparciu o często słyszane porady, takie jak:

„Twórz i wyrzucaj niestandardowe wyjątki, jeśli masz warunek błędu, który można programowo obsługiwać w inny sposób niż jakikolwiek inny istniejący wyjątek. W przeciwnym razie wyrzuć jeden z istniejących wyjątków.”Źródło

Nie spodziewam się obsługiwać wyjątków inaczej w normalnym przepływie (jest to krytyczny wyjątek, więc i tak przechodzę do trybu paniki) i nie sądzę, aby tworzenie wyjątku dla każdego przypadku testowego było słuszne. Jakieś opinie?

questionAnswers(7)

yourAnswerToTheQuestion