Đây là câu hỏi chung về Bu lông Thử nghiệm Đơn vị và Vòi trong Cấu trúc liên kết bão được viết bằng Java.Kiểm tra Bu lông và Vòi Bão
thực hành đề nghị và kim chỉ nam cho unit-testing là gì (JUnit?) Bu lông và vòi?
Ví dụ, tôi có thể viết một bài kiểm tra JUnit cho một Bolt
, nhưng mà không hiểu đầy đủ khuôn khổ (như vòng đời của một Bolt
) và những tác động serialization, dễ dàng mắc sai lầm khi Constructor dựa trên sự sáng tạo của phi serializable biến thành viên. Trong JUnit, bài kiểm tra này sẽ trôi qua, nhưng trong một cấu trúc liên kết, nó sẽ không hoạt động. Tôi hoàn toàn tưởng tượng có nhiều điểm kiểm tra cần xem xét (ví dụ như ví dụ này với vòng đời Serialization &).
Vì vậy, nó là khuyến cáo rằng nếu bạn sử dụng JUnit dựa unit tests, bạn chạy một topo giả nhỏ (LocalMode
?) Và kiểm tra các hợp đồng ngụ ý cho Bolt
(hoặc Spout
) dưới Topology đó? Hoặc, là nó OK để sử dụng JUnit, nhưng ngụ ý được rằng chúng ta phải mô phỏng vòng đời của một Bolt (tạo ra nó, gọi prepare()
, chế giễu một Config
, vv) một cách cẩn thận? Trong trường hợp này, một số điểm kiểm tra chung cho lớp đang được kiểm tra (Bolt/Spout) cần xem xét là gì?
Các nhà phát triển khác đã làm gì, liên quan đến việc tạo các thử nghiệm đơn vị thích hợp?
Tôi nhận thấy có một API thử nghiệm Topology (Xem: https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java). Tốt hơn là sử dụng một số API đó và đứng lên "Kiểm tra cấu trúc liên kết" cho từng cá nhân Bolt
& Spout
(và xác minh hợp đồng tiềm ẩn mà Bolt cung cấp cho, ví dụ - đó là đầu ra Đã khai báo)?
Cảm ơn
Bạn đã bao giờ quyết định một cách tiếp cận? –
Vâng, tôi đã đọc các câu trả lời bên dưới. Có vẻ như có một số hướng dẫn chung, nhưng không có gì đặt trong đá. Tôi sẽ để câu hỏi mở ra một chút lâu hơn để xem liệu có ai khác có suy nghĩ gì sau đó đóng nó lại không. Tôi thích cả hai cách tiếp cận sử dụng API kiểm tra (TestingApiDemo.java) cũng như câu trả lời của bạn để chế nhạo phụ thuộc, @ChrisGerken. – Jack