2012-02-04 51 views
9

Tôi khá mới để thử nghiệm đơn vị. Tôi đang đi học, và hiện đang theo học các dự án cơ sở. Chúng tôi có một ứng dụng web để viết. Chúng ta sẽ sử dụng C# và asp.net. Chúng tôi hiện đang thực hiện tất cả các yêu cầu, kiến ​​trúc và tôi chịu trách nhiệm về Đảm bảo chất lượng và chọn đúng khuôn khổ. Chúng tôi có rất nhiều giấy tờ để hoàn thành và tôi đang cố hoàn thành kế hoạch QA của mình.Kiểm tra đơn vị trong asp.net

Tôi không chắc chắn nên sử dụng gì để thử nghiệm đơn vị. Mặc dù, chúng tôi sẽ sử dụng asp.net tôi không nghĩ rằng chúng tôi có nhu cầu sử dụng MVC vào thời điểm này. Để đơn giản vì chúng ta nên sử dụng Visual Studio được xây dựng trong chức năng để tạo ra một thử nghiệm đơn vị ASP.NET? Hoặc, tôi nên nhìn vào sử dụng Nunit? hoặc một cái gì đó như nó?

Hãy nhớ đây chỉ là một dự án trường học. Nhóm của chúng tôi là tất cả 4 sẽ phải thực hiện các bài kiểm tra đơn vị và hầu hết chúng ta không có nhiều kinh nghiệm trong đó.

Suy nghĩ của bạn là gì?

Trả lời

8

Để đơn giản, chúng ta có nên sử dụng studio trực quan được xây dựng trong chức năng để tạo thử nghiệm đơn vị ASP.NET không?

Không, điều đó hoàn toàn vô dụng. Vâng, bạn có thể sử dụng nó cho dự án trường học của bạn hoặc một cái gì đó nhưng không ngốc mình rằng bạn đang làm thử nghiệm đơn vị.

Hoặc, tôi có nên xem xét sử dụng Nunit không? hoặc một cái gì đó như nó?

Vâng, chắc chắn. Nhưng để thành công có thể kiểm tra đơn vị ứng dụng ASP.NET của bạn, nó cần phải được thiết kế sao cho các lớp khác nhau được kết nối yếu giữa chúng và có thể được tái sử dụng trong sự cô lập. Điều này có thể dễ dàng đạt được bằng cách sử dụng các trừu tượng (các giao diện và các lớp trừu tượng) thay vì làm việc với các triển khai cụ thể. Cũng nên nhớ rằng bất kỳ mã nào phụ thuộc vào một HttpContext không thể dễ dàng được kiểm tra đơn vị trong sự cô lập. Cách tốt nhất là làm việc với các trừu tượng được cung cấp bởi ASP.NET như HttpContextBase, HttpRequestBase, HttpResponseBase, ... có thể dễ dàng được mô phỏng trong một bài kiểm tra đơn vị.

+0

Darin, bạn vẫn có thể ghép nối yếu với các lớp cụ thể, phải không? Nói cách khác, nếu bạn lớp kinh doanh tiêu thụ các lớp của lớp dữ liệu của bạn, lớp dữ liệu của bạn vẫn có thể được thử nghiệm một cách cô lập từ bl. –

+1

@Shark, không, lớp doanh nghiệp của bạn hiện được kết hợp chặt chẽ với lớp truy cập dữ liệu của bạn làm cho nó không thể kiểm tra đơn vị trong sự cô lập. Vâng, bạn có thể kiểm tra đơn vị lớp dữ liệu của bạn mà không phụ thuộc vào bất kỳ lớp nào khác (ngoài cơ sở dữ liệu). Vì vậy, để trả lời câu hỏi của bạn, bạn vẫn có thể ghép nối yếu với các lớp cụ thể, không, câu trả lời là 'không, bạn không thể có sự ghép nối yếu với các lớp cụ thể'. –

+0

Ok, tôi thấy những gì bạn đang nói bây giờ. 1 trên câu trả lời của bạn bằng cách này. Vậy đây có phải là cách bạn thiết kế phần lớn các giải pháp n tầng của bạn không? Không bao giờ bất kỳ lớp bê tông nào trải rộng trên một lớp, chỉ các giao diện và các lớp trừu tượng? –

1

Nếu bạn đang tìm cách viết các bài kiểm tra đơn vị, bạn cần tách rời logic của mình khỏi bản trình bày. MVC là tuyệt vời ở đó, mà làm cho nó nhiều hơn nữa đơn vị testable hơn webforms. Không thể thử nghiệm các biểu mẫu web, chỉ khó hơn.

Cuối cùng, tuy nhiên, bạn chỉ cần giữ nguyên các nguyên tắc SOLID và đảm bảo rằng bạn tự do sử dụng giao diện trong suốt dự án của mình để bạn có thể giả lập chúng.

NUnit so với MSTest không thực sự là vấn đề. Có nhiều tính năng tương đương nhau giữa hai cái, và ưu điểm của MStest là nó được xây dựng ngay trong Visual Studio. Đi với bất cứ điều gì bạn muốn.

Tôi cũng khuyên bạn nên đọc sách The Art of Unit Testing.

Tùy thuộc vào kích thước và phạm vi dự án của bạn, nó có thể đáng xem xét bằng cách sử dụng đảo ngược khung điều khiển chẳng hạn như Ninject để kết hợp tất cả các phụ thuộc của bạn với nhau.

+0

Tôi đã lấy một lớp mẫu thiết kế. Tôi nghĩ rằng chúng ta có thể sử dụng một số kiểu mẫu. Dự án chỉ là một ứng dụng web trực tuyến tạo ra một ứng dụng công việc tự động cho một chuỗi bán lẻ. Im vẫn còn bối rối về những gì để sử dụng. Nếu tôi đi với asp.MVC tôi nên đi với các tính năng VS được xây dựng? –

+0

@icelated Tôi không chắc chắn ý của bạn là "được xây dựng trong tính năng VS". Bạn có nghĩa là mẫu dự án MVC? Nếu có, thì có. MVC có thể kiểm tra và linh hoạt hơn các biểu mẫu web, nhưng yêu cầu công việc nhiều hơn một chút từ nhà phát triển. –

+0

Trong VS có một tab thử nghiệm. Nếu bạn nhấp vào nó, nó sẽ cho bạn hộp thoại kiểm tra mới bật lên và bạn có một vài lựa chọn: Kiểm tra đơn vị cơ bản. Kiểm tra chung, kiểm tra tải, kiểm tra đơn vị, vv .. –

0

Đồng ý với cả hai. Chắc chắn và phát hành nếu công cụ của bạn được kết hợp chặt chẽ (tích hợp và dựa vào nhau). Phá vỡ các khớp nối vào các yêu cầu giao diện người dùng mà bạn có thể gửi tất cả các bài kiểm tra thông qua, và tôi chắc chắn sử dụng NUnit với C#, nhưng công việc dev của chúng tôi là với WPF.Tất cả các chức năng xử lý dữ liệu và tĩnh đều có thể được kiểm tra để xác nhận các giới hạn, null, thiếu/tham số không hợp lệ, kết quả mong đợi so với những gì REALLY được trả về. Không được thực hiện tốt có thể gây tổn thương trên trang web của bạn một cách nhanh chóng khác.

+0

Tôi nghĩ rằng tôi sẽ có một cái nhìn thứ hai tại bằng cách sử dụng MVC thay thế. Tôi lấy một lớp mẫu thiết kế và tôi nghĩ rằng chúng tôi có thể kết hợp điều này. Tôi sẽ nhìn vào NUnit. –