2010-09-13 49 views
9

Trình tạo thử nghiệm đơn vị tích lũy (VS) cho các lớp đích nên được sử dụng hoặc tôi nên tự học cách viết một bài kiểm tra đơn vị? Và cái này là cái gì? Tôi nghe thấy nó hơn và hơn nhưng không ai quan tâm để đưa ra một lời giải thích tốt.C# - Kiểm tra đơn vị, Mock?

Xin cảm ơn trước.

+1

Điều đó thật thú vị. –

+0

có thể trùng lặp của [Mocking là gì?] (Http://stackoverflow.com/questions/2665812/what-is-mocking) – nawfal

Trả lời

16

Bạn cần phải tự học viết các bài kiểm tra đơn vị. Bắt đầu từ chân phải với sự hiểu biết tốt về thuật ngữ mà nhiều người mắc lỗi liên quan đến:

Kiểm tra đơn vị: Thử nghiệm một đơn vị mã, thử nghiệm nguyên tử rất nhỏ.

Kiểm tra tích hợp: Thử nghiệm nhiều đơn vị mã được tích hợp với nhau, để đi qua các lớp khác nhau và đảm bảo chúng đang sử dụng chính xác từng phần. Những điều này nên được thực hiện sau khi kiểm tra đơn vị đã xác minh các đơn vị riêng lẻ hoạt động độc lập. Nhiều người nhầm lẫn gọi đây là bài kiểm tra đơn vị.

Kiểm tra xác minh được xây dựng: Kiểm tra sản phẩm được xây dựng bằng cách triển khai và chạy thử nghiệm sẽ tương tác với sản phẩm theo cách người dùng muốn. Cũng nhầm lẫn được gọi là kiểm tra đơn vị thường xuyên. Đây là các thử nghiệm nổi bật nhất đầy đủ nhất và thường được thực hiện thủ công bằng cách thử nghiệm các nhóm thay vì tự động.

Đây là quickstart cho MOQ mà là một khuôn khổ mocking: https://github.com/Moq/moq4/wiki/Quickstart

Mocking là hành động lấy một mảnh nhỏ của mã có thể phụ thuộc vào những thứ khác, chế giễu những thứ khác lên để bạn có thể kiểm soát hoàn cảnh xung quanh đoạn mã bạn muốn kiểm tra.

Mục đích của chế nhạo là nguyên tử trong thử nghiệm. Nó cho phép bạn kiểm tra từng phần mã mà bạn muốn, mà không cần kiểm tra nó do lỗi trong các đoạn mã phụ thuộc. Ngoài ra mocking mang đến cho bạn khả năng chế tạo nhiều kịch bản khác nhau để kiểm tra các trường hợp cạnh của từng đoạn mã. Mocking thường được tạo ra để tạo ranh giới xung quanh mã đích trong các bài kiểm tra đơn vị, mặc dù việc sử dụng nó trong các thử nghiệm tích hợp cũng không phải là điều bình thường.

+0

Nếu những "mocks" đó được lưu trong một lớp cho chính chúng hoặc chúng chỉ là tạm thời để kiểm tra một số code ra và sau đó loại bỏ các mô hình (s) sau đó? – ebb

+0

@ebb: Đó là một cách học cũ để làm và hoạt động tốt, nhưng đó là nơi các khuôn khổ giả mạo xuất hiện, chúng cho phép bạn giả lập các đối tượng mà không thực sự tạo lớp mô hình để sử dụng. Tất cả mocking tuy nhiên phụ thuộc vào việc có một mối quan hệ đa hình với các đối tượng bạn đang giả vờ là. Vì vậy, bạn cần một giao diện hoặc lớp cơ sở để chia sẻ, hoặc các phương thức ảo để ghi đè lên các đối tượng mà bạn sẽ giả vờ là. –

+1

Tôi nên học cái gì đầu tiên ... Mocking or Unit testing? – ebb