Visual Studio Test có thể kiểm tra các ngoại lệ dự kiến bằng cách sử dụng thuộc tính ExpectedException. Bạn có thể vượt qua trong một ngoại lệ như thế này:Làm cách nào để kiểm tra ngoại lệ được mong đợi bằng thông báo ngoại lệ cụ thể từ tệp tài nguyên trong Visual Studio Test?
[TestMethod]
[ExpectedException(typeof(CriticalException))]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
Bạn cũng có thể kiểm tra các thông điệp chứa trong ExpectedException như thế này:
[TestMethod]
[ExpectedException(typeof(CriticalException), "An error occured")]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
Nhưng khi kiểm tra các ứng dụng I18N Tôi sẽ sử dụng một tập tin tài nguyên để có được thông báo lỗi đó (bất kỳ thông báo lỗi nào thậm chí có thể quyết định kiểm tra các bản địa hóa khác nhau của thông báo lỗi nếu tôi muốn, nhưng Visual Studio sẽ không cho phép tôi làm điều này:
[TestMethod]
[ExpectedException(typeof(CriticalException), MyRes.MultipleOrganisationsNotAllowed)]
public void GetOrganisation_MultipleOrganisations_ThrowsException()
Compil er sẽ đưa ra lỗi sau:
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute
Có ai biết cách kiểm tra ngoại lệ có thông báo từ tệp tài nguyên không?
Một lựa chọn Tôi đã xem xét là sử dụng lớp tùy chỉnh ngoại lệ, nhưng dựa trên lời khuyên thường nghe như:
"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
Tôi không mong đợi để xử lý các trường hợp ngoại lệ khác nhau trong dòng chảy bình thường (đó là một ngoại lệ quan trọng, vì vậy tôi đang đi vào chế độ hoảng loạn anyway) và tôi không nghĩ rằng việc tạo ra một ngoại lệ cho mỗi trường hợp thử nghiệm là điều đúng để làm. Bạn có ý kiến gì không?
Tham số thông điệp không được kiểm tra đối với thông điệp của ngoại lệ được ném. –