Tôi dường như không thể tìm thấy câu trả lời .NET cho vấn đề này, điều mà tôi nghĩ là khá phổ biến.
Mẫu tốt nhất để thử nghiệm đơn vị phương pháp không đồng bộ là gì? Rõ ràng tôi cần phải gọi phương pháp và sau đó xem nếu gọi lại cháy, nhưng là có một cách tốt hơn so với chỉ đơn giản là ngủ cho một chút và sau đó kiểm tra cho một lá cờ được thiết lập bởi các cuộc gọi lại không? Có phải là không? Quản lý các cờ được một chút lộn xộn, nơi có nhiều thử nghiệm đang chạy.Cách tốt nhất để kiểm tra đơn vị một phương pháp không đồng bộ là gì?
Trả lời
Tôi thường sử dụng một đại biểu ẩn danh và một waithandle. Ví dụ FOr Tôi có một chức năng trong người trình bày của tôi được gọi là SetRemoteTableName. Khi tên được đặt, nó cũng tăng một sự kiện. Tôi muốn kiểm tra sự kiện đó, được nâng lên không đồng bộ. Bài kiểm tra có dạng như sau:
[TestMethod]
[WorkItem(244)]
[Description("Ensures calling SetRemoteTableName with a valid name works
AND raises the RemoteTableNameChange event")]
public void SetRemoteTableNamePositive()
{
string expected = "TestRemoteTableName";
string actual = string.Empty;
AutoResetEvent are = new AutoResetEvent(false);
SQLCECollectorPresenter presenter = new SQLCECollectorPresenter();
presenter.RemoteTableNameChange += new EventHandler<GenericEventArg<string>>(
delegate(object o, GenericEventArg<string> a)
{
actual = a.Value;
are.Set();
});
presenter.SetRemoteTableName(expected);
Assert.IsTrue(are.WaitOne(1000, false), "Event never fired");
Assert.AreEqual(actual, expected);
}
Tách mã để mã bit đồng bộ được gọi bằng trình bao bọc không đồng bộ mỏng.
Sau đó, hầu hết các thử nghiệm đơn vị của bạn có thể kiểm tra mã đồng bộ.
có cách nào tốt hơn là chỉ đơn giản là ngủ một chút và sau đó kiểm tra cờ được đặt bằng gọi lại không?
Thay cờ bằng tay cầm chờ. Thay vì đặt cờ, hãy đặt tay cầm chờ. Thay vì ngủ và sau đó kiểm tra xem cờ đã được đặt chưa, chờ trên tay cầm chờ ... và chờ với thời gian chờ, để nếu bạn thức dậy vì hết thời gian chờ thay vì thức dậy vì tay cầm mà bạn đang đợi đã bị sa thải bằng cách gọi lại, sau đó bạn biết rằng thử nghiệm không thành công (tức là cuộc gọi lại không được gọi trong khoảng thời gian chờ).
- 1. Có cách nào để kiểm tra đơn vị một phương pháp không đồng bộ không?
- 2. Đơn vị kiểm tra phương pháp void?
- 3. Một cách tốt để kiểm tra đơn vị templated C++ phương pháp/lớp/chức năng là gì?
- 4. Cách tốt nhất để viết các bài kiểm tra đơn vị trong Dart là gì?
- 5. Đơn vị kiểm tra phương pháp WCF
- 6. Cách kiểm tra đơn vị mã được đồng bộ hóa
- 7. Kiểm tra đơn vị - Những gì không để kiểm tra
- 8. Kiểm tra đơn vị là gì?
- 9. Cách tốt nhất để kiểm tra javascript là gì?
- 10. Kiểm tra đơn vị Phương pháp mở rộng trên HtmlHelper
- 11. phương pháp tĩnh và kiểm tra đơn vị
- 12. Tốt nhất không đồng bộ trong khi phương pháp
- 13. Kiểm tra cuộc gọi không đồng bộ trong kiểm tra đơn vị trong iOS
- 14. Cách tốt nhất để viết các bài kiểm tra đơn vị cho một API REST là gì?
- 15. Cách tốt nhất để kiểm tra RedirectToAction là gì?
- 16. Tư vấn kiểm tra đơn vị - cách kiểm tra đơn vị của bạn .asmx
- 17. Kiểm tra đơn vị một Servlet Java
- 18. C# đơn vị kiểm tra: Kiểm tra một phương pháp có sử dụng MapPath
- 19. Google Mock phương pháp tĩnh kiểm tra đơn vị C++
- 20. Kiểm tra đơn vị phương pháp riêng - mục tiêu C
- 21. Phương pháp tốt nhất để định vị vị trí cho dữ liệu địa lý là gì?
- 22. Cách tốt nhất để viết về cách viết một bộ x86 đơn giản là gì?
- 23. Cách tốt nhất để kiểm tra đơn vị cho một ứng dụng web
- 24. Cách kiểm tra mã không đồng bộ
- 25. Phương pháp tốt nhất để buộc hết hạn bộ nhớ cache trong ASP.NET là gì?
- 26. Cách tốt nhất để kiểm tra xem một Type là một bộ sưu tập
- 27. Cách tốt nhất để gửi yêu cầu HTTP GET không đồng bộ trong Android là gì?
- 28. Cách tốt nhất để tăng một điều tra là gì?
- 29. Kiểm tra cuộc gọi phương thức không đồng bộ
- 30. Cách tốt nhất để kiểm tra tính hợp lệ của XML từ một phương pháp?
Điều này thật tuyệt vời - cảm ơn bạn! – womp