Có ai có ví dụ về cách đơn vị kiểm tra phương pháp không đồng bộ trong ứng dụng Windows 8 Metro, để đảm bảo rằng nó ném ngoại lệ bắt buộc?Đơn vị thử nghiệm phương pháp không đồng bộ cho ngoại lệ cụ thể
Với một lớp học với một phương pháp async
public static class AsyncMathsStatic
{
private const int DELAY = 500;
public static async Task<int> Divide(int A, int B)
{
await Task.Delay(DELAY);
if (B == 0)
throw new DivideByZeroException();
else
return A/B;
}
}
Tôi muốn viết một phương pháp thử nghiệm bằng cách sử dụng xây dựng Async.ExpectsException mới. Tôi đã thử: -
[TestMethod]
public void DivideTest1()
{
Assert.ThrowsException<DivideByZeroException>(async() => { int Result = await AsyncMathsStatic.Divide(4, 0); });
}
nhưng tất nhiên thử nghiệm không chờ phương thức async hoàn thành và do đó kết quả trong thử nghiệm không thành công ngoại lệ chưa được ném.
này hoạt động tốt trong các phiên bản khác của C# , nhưng đã bị xóa khỏi các ứng dụng tàu điện ngầm Windows 8 http: //blogs.msdn.com/b/visualstudioalm/lưu trữ/2012/06/18/visual-studio-2012-rc-what-s-new-in-unit-testing.aspx – Peregrine
Vâng, đó là "thú vị"! Tôi đã cập nhật câu trả lời của mình để cho thấy cách bạn có thể thực hiện 'ThrowsException' tương thích 'async' nếu các bài kiểm tra đơn vị Win8 không hỗ trợ nó. –
Cảm ơn Stephen đã làm việc, mặc dù tôi không thể tin rằng những gì có vẻ như một tính năng mới thanh lịch sẽ yêu cầu như một hack, đặc biệt là nhìn thấy như Windows 8 Metro nơi nhấn mạnh vào các phương pháp async. Hy vọng rằng các tài liệu cuối cùng sau khi phát hành Windows 8 sẽ được sắp tới hơn. – Peregrine