2009-02-24 46 views
10

Tôi muốn biết cách thực hiện kiểm tra đơn vị trong một ứng dụng hiện có (khá lớn) bằng cách sử dụng studio hình ảnh 2008 (.net 2.0).Mới để kiểm tra đơn vị

Tôi hiểu rằng việc phát triển các bài kiểm tra đơn vị cho mã hiện có/kế thừa không thực tế nhưng tôi muốn có các bài kiểm tra mã chuyển tiếp.

Tôi đã tìm thấy rất nhiều ví dụ về cách viết kiểm tra mã nhưng không có gì về cách thiết lập từ đầu cho dự án hiện tại và cách tích hợp nó vào chu kỳ phát triển.

Trả lời

5

cách tiếp cận đơn giản:

  • Chọn một trong các khuôn khổ đơn vị kiểm tra (Nunit, MbUnit, xUnit, VS khuôn khổ đơn vị kiểm tra, ...)
  • Thêm dự án cho các bài kiểm tra đơn vị trong giải pháp của bạn (ví dụ unittests).
  • Bắt đầu viết bài kiểm tra.

Để tổ chức dễ dàng hơn, hãy tạo ít nhất một không gian tên cho từng dự án trong giải pháp, ví dụ UnitTest.Project1, UnitTests.Project2, ... Tùy thuộc vào quy mô dự án, thêm nhiều cấp độ hơn vào không gian tên.

Dự án thử nghiệm cách này là một phần của giải pháp. Nếu bạn sử dụng một số công cụ tích hợp liên tục, thì các thử nghiệm có thể được thực hiện tự động trên mỗi cam kết với kho lưu trữ mã nguồn.

Edit:
Về bình luận về vấn đề MS Unit Test Framework với việc tạo ra các bài kiểm tra đơn vị, có biết vấn đề: "Create unit test" wizard does not work. Dường như có các loại dự án không được hỗ trợ ngăn trình hướng dẫn kiểm tra đơn vị hoạt động chính xác. Tôi vừa thử với một giải pháp có một F # và một số dự án C#. Tôi đã thêm dự án thử nghiệm đơn vị và cố gắng thêm thử nghiệm. Trình hướng dẫn kiểm tra có vấn đề cho đến khi tôi dỡ bỏ dự án F #. Sau đó, mọi thứ hoạt động tốt.

+0

Đây có thể là một câu hỏi ngu ngốc nhưng tôi nghĩ rằng thử nghiệm đơn vị đã được "nướng" vào IDE VS 2008, vì vậy bạn cần những khung kiểm thử đơn vị nào? – CodeKiwi

+0

Bạn nói đúng. Tôi quên mất điều đó bởi vì tôi đang sử dụng NUnit chỉ vì nó là lựa chọn tốt nhất 4 năm trước khi tôi bắt đầu thử nghiệm đơn vị. – zendar

+0

Tôi đã cố gắng thêm các bài kiểm tra đơn vị bằng cách sử dụng tùy chọn ngữ cảnh "tạo đơn vị thử nghiệm" khi nhấp chuột phải vào một lớp nhưng luôn luôn phải đối mặt với lỗi (không thể nhớ được), tuy nhiên tôi nghi ngờ nó liên quan đến nguồn trực quan an toàn can thiệp . – CodeKiwi

1

Tôi đặc biệt khuyên bạn nên đọc sách này: Working Effectively with Legacy Code nếu bạn muốn thực hiện kiểm tra đơn vị cho mã hiện có. Nó cũng là một cuốn sách hay về các phương pháp hay nhất cho các bài kiểm tra đơn vị nói chung.

Có thể thực hiện kiểm tra đơn vị trên các dự án hiện có, nhưng bạn sẽ phải thực hiện một số điều chỉnh ở đây và ở đó để làm cho mã có thể kiểm tra được. Quá nhiều phụ thuộc thường là vấn đề.

EDIT (sau nhận xét của bạn) Nếu bạn thực sự muốn nhúng thử nghiệm đơn vị vào chu kỳ phát triển của mình thì bạn nên truy cập TDD (Test Driven Development). Mục đích ở đây là để viết các bài kiểm tra đơn vị của bạn trước tiên, vì vậy bạn có một sự hiểu biết tốt về những gì các lớp học của bạn sẽ làm. Tất nhiên những thử nghiệm này sẽ thất bại, nhưng mục tiêu là làm cho chúng hoạt động từng cái một. Làm một google trên TDD, có rất nhiều thông tin trên mạng.

+0

Vâng tôi biết nó một chút phù phiếm thực hiện nó ở giai đoạn này, nhưng chúng tôi đang nhận được cơ hội để bắt đầu lại như một dự án greenfield .. bởi vì những thay đổi về kiến ​​trúc, tôi muốn thực hiện thử nghiệm đơn vị ngay từ đầu và Id nghĩ có được một khởi đầu ngay bây giờ .. (do đó câu hỏi) – CodeKiwi

+0

huh? Tôi không hiểu – CodeKiwi

+0

Gerrie, Có TDD là điều chúng tôi đang điều tra tại thời điểm này, một phần lý do tôi muốn đưa vào thực hành thử nghiệm một số đơn vị ngay bây giờ, – CodeKiwi

3

Một cách dễ dàng để thử nghiệm với mã hiện có là có chính sách viết thử nghiệm khi tìm thấy lỗi.

i.e

  • Tìm lỗi
  • Viết thử nghiệm mà recplicates lỗi
  • Fix
+0

chỉ cần quan tâm, giả sử bạn có phương pháp mục đích duy nhất (hoặc gần với mục đích duy nhất) bao nhiêu thử nghiệm bạn thường có cho mỗi phương pháp (công viên bóng), – CodeKiwi

+0

Thực hiện một thử nghiệm đối với một số thông số "trung bình" hoặc "chuẩn" và đảm bảo thực hiện kiểm tra cho tất cả các điều kiện ranh giới đã biết (tham số null, giá trị max/min, ...). – zendar

+0

+1 và viết kiểm tra cho bất kỳ mã mới nào đi vào, không chỉ cho các lỗi. Trong thời gian nó tăng lên. –