Tôi có một bài kiểm tra giao tiếp qua một cổng TCP nơi tôi mong đợi máy chủ không phản hồi trong một khung thời gian đã định khi tôi gửi một thông báo nhất định.Thử nghiệm JUnit cho thời gian chờ mong đợi
Hành vi của máy chủ không phải là điều tôi có thể kiểm soát.
Tôi biết nóng để không thể kiểm tra nếu nó chưa hoàn thành trong một khung thời gian đã định. Nhưng làm thế nào tôi có thể làm ngược lại, làm cho nó vượt qua cho không hoàn thành trong khung thời gian?
Tôi có thể sử dụng @Test (timeout=1000)
để thực hiện phép thử nếu không hoàn thành trong vòng một giây.
Nhưng, sử dụng Junit 4, có chức năng nào để kiểm tra thời gian chờ dự kiến là kết quả tích cực không? I E. Bài kiểm tra sẽ thất bại nếu hoàn thành trong khung thời gian và vượt qua nếu không?
Có timeout ném một ngoại lệ không? Nếu có, bạn có thể kiểm tra ngoại lệ thời gian chờ đó. – Compass
Hãy cẩn thận với điều này, tôi không nghĩ rằng bạn có thể 'mong đợi' ngoại lệ được ném bởi 'timeout'. Bạn có thể sử dụng một bộ đếm thời gian hoặc chỉ cần kiểm tra thời gian hoạt động sau đó, nếu vượt quá thời gian mong muốn của bạn, hãy ném một ngoại lệ mà bạn mong đợi. Không có vẻ rất hiệu quả mặc dù. – Zircon
Ngoài ra, mục đích của thử nghiệm chính xác là gì? Nếu nó đi ra khỏi phạm vi mã của bạn hạ lưu đến máy chủ, tôi không chắc chắn làm thế nào mang lại lợi ích là để kiểm tra kết thúc của bạn. Nếu bạn đang mong đợi mã của bạn để xử lý thời gian chờ, sau đó bạn chỉ nên giả lập các ổ cắm và ném ngoại lệ trở lại. – Compass