Câu hỏi của bạn dường như gấp hai lần với tôi. Một mặt bạn muốn so sánh hai khung kiểm tra, mặt khác bạn muốn thực hiện các thử nghiệm dễ dàng, có các xác nhận tự nhiên, v.v ...
Ok, trước tiên, JUnit đã chơi trò đuổi bắt với TestNG về chức năng, họ đã thu hẹp khoảng cách một số thứ với v4, nhưng theo tôi thì không đủ. Những thứ như chú thích và bảng dữ liệu vẫn tốt hơn nhiều trong TestNG. Ngoài ra, họ linh hoạt hơn về mặt thực hiện kiểm tra, vì TestNG có sự phụ thuộc kiểm tra, nhóm và đặt hàng.
JUnit vẫn yêu cầu một số phương thức trước / sau nhất định là tĩnh, điều này giới hạn những gì bạn có thể làm trước khi chạy thử nghiệm, TestNG không bao giờ gặp phải vấn đề này.
TBH, chủ yếu là sự khác biệt giữa hai khung không có ý nghĩa gì nhiều, trừ khi bạn tập trung vào thử nghiệm tích hợp / tự động hóa. JUnit từ kinh nghiệm của tôi được xây dựng từ cơ sở để thử nghiệm đơn vị và hiện đang được đẩy lên các cấp độ thử nghiệm cao hơn, IMO làm cho nó trở thành công cụ sai cho công việc. TestNG làm tốt công việc kiểm tra đơn vị và nhờ khả năng xử lý dữ liệu mạnh mẽ và khả năng thực thi thử nghiệm tuyệt vời, hoạt động thậm chí còn tốt hơn ở cấp độ thử nghiệm tích hợp / tự động hóa.
Bây giờ đối với những gì tôi tin là một vấn đề riêng biệt, làm thế nào để viết các bài kiểm tra có cấu trúc tốt, dễ đọc và có thể duy trì. Hầu hết điều này tôi chắc chắn bạn biết, nhưng những thứ như Mô hình nhà máy , Mẫu lệnh và PageObjects (nếu trang web thử nghiệm của bạn) rất quan trọng, điều rất quan trọng là phải có một lớp trừu tượng giữa thử nghiệm của bạn (SUT) và thử nghiệm thực tế là (khẳng định logic kinh doanh). Để có các xác nhận đẹp hơn nhiều, bạn có thể sử dụng Hamcrest . Sử dụng kế thừa / giao diện javas để giảm sự lặp lại và thực thi tính phổ biến.
Hầu như quên, cũng sử dụng Mẫu Trình tạo dữ liệu thử nghiệm , kết hợp này với chú thích dữ liệu của TestNG là rất hữu ích.