Tôi muốn kiểm tra một số mã dựa trên truyền dẫn mạng. Mã tạo một yêu cầu và cung cấp một cuộc gọi lại - khi yêu cầu hoàn tất, cuộc gọi lại được kích hoạt. Tôi muốn thử truyền dẫn mạng, và sử dụng Thread.sleep
để mô phỏng độ trễ một số ... nhưng tất nhiên điều đó sẽ làm cho toàn bộ thử nghiệm tạm dừng.Kiểm tra mã không đồng bộ với JUnit
Cho đến nay tôi đã tạo các chuỗi mới và sử dụng CountDownLatch
es trong suốt quá trình kiểm tra để dừng thử nghiệm kết thúc trước khi cuộc gọi lại được kích hoạt. Đối tượng mạng giả của tôi tạo một luồng mới, ngủ trên luồng đó và sau đó kích hoạt cuộc gọi lại. Đó là thực sự làm việc khá tốt, nhưng vấn đề là bất kỳ lỗi xác nhận trong callback không được báo cáo cho thread junit ban đầu - thay vào đó, tôi nhận được văn bản ngoại lệ trên bàn điều khiển, nơi nó khó hiểu hơn và sử dụng.
Tôi hy vọng có một trong hai:
- Một cách để ống
assertEquals
đầu ra từ đề sinh ra vào thu sản lượng JUnit chính, hoặc - Một cách hoàn toàn khác biệt và tốt hơn để kiểm tra mã luồng trong JUnit, hoặc
- một số cách để mô phỏng mã không đồng bộ trong một chủ đề duy nhất
Thanks cho bất kỳ ý tưởng!
Tại sao không kiểm tra QUnit: http://docs.jquery.com/QUnit –