Làm thế nào để bạn kiểm tra đơn vị ứng dụng và mã UI?


10

Tôi thích viết bài kiểm tra đơn vị và đồng ý rằng chúng là một cách tuyệt vời để kiểm tra mã, ngăn ngừa hồi quy, v.v. Tuy nhiên, tôi thấy mình không thể viết chúng nhiều vì phần lớn mã tôi làm việc hàng ngày và hàng ngày là ứng dụng mã hiển thị giao diện người dùng cho người dùng. Có một cách tốt của mã ứng dụng thử nghiệm đơn vị? Các thực hành tốt nhất ở đây là gì?

Tôi không tìm kiếm một câu trả lời cụ thể như khung, v.v. Nhưng nói chung, làm thế nào để bạn tiếp cận vấn đề này?


"Mã ứng dụng hiển thị UI" là gì? Bạn đang nói về C trong MVC?
Martin Wickman

Tôi đang nói về bất kỳ loại giao diện đồ họa nào - JavaScript / HTML, C ++ với MFC, WinForms, WPF, v.v ...
Justin Ethier

MVVM là đơn vị kiểm tra đơn vị dễ dàng. Xem mẫu lệnh
Amir Rezaei

@amir - Bạn có bất kỳ tài liệu tham khảo hoặc thông tin bổ sung?
Justin Ethier

Câu trả lời:


8

Để kiểm tra giao diện người dùng thực tế, Selenium hoạt động tốt.

Nếu bạn muốn kiểm tra đơn vị thực tế, chiến lược của bạn là đẩy càng nhiều logic trở lại từ giao diện người dùng thực tế càng tốt, thường là trong một đối tượng ViewModel. Sau đó, bạn có thể viết các bài kiểm tra đơn vị đối với đối tượng ViewModel.

Nói cách khác, đặt càng ít logic trong giao diện người dùng thực tế càng tốt, để thử nghiệm đơn vị có thể diễn ra ở nơi khác.


Đó là thiết kế tốt cho SoC không nên có logic Tên miền / doanh nghiệp trong giao diện người dùng. Rất nhiều logic máy khách - tính tương tác / xác thực có thể đi vào giao diện người dùng với JavaScript, có thể kiểm tra được đơn vị.
StuperUser

1

Tôi đã thành công với việc kiểm tra đơn vị ứng dụng của mình bằng MSTest và kiểm tra Javascript của mình với QUnit và chọn kết quả của các thử nghiệm đó bằng một thử nghiệm Đơn vị MSTest duy nhất sử dụng WatiN (tôi được đề xuất Selenium , cũng có khả năng ghi lại các thử nghiệm, nhưng tìm thấy WatiN tốt hơn để tự động hóa sạch sẽ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.