2009-12-25 33 views
7

Tôi vừa nghe nói về BDD khi xem video Scott Guthrie in Sweden. Một trong những người nghe hỏi câu hỏi với Scott về cách VS2010 và ASP.NET MVC làm gì để hỗ trợ BDD.Framework BDD tốt nhất để làm việc với ASP.NET MVC 2 + C# 4 là gì?

Sau đó, tôi tìm kiếm về BDD (Behavior Driven Development) tập trung vào đặc điểm kỹ thuật nhiều hơn kiểm tra đơn vị khi so sánh với TDD (Test Driven Development). Tôi tìm thấy một số khung làm việc với Ruby và Java. Nhưng tôi không có bất kỳ khuôn khổ nổi tiếng nào cho .NET.

Vui lòng đề xuất cho tôi về khuôn khổ BDD và tóm tắt PRO/CON của nó.

PS. khuôn khổ BDD đề nghị phải làm việc rất tốt trên NET 4, C# 4.0 và ASP.NET MVC 2.

Cảm ơn,

Trả lời

13

Tôi thấy câu hỏi này đã có câu trả lời và tôi chưa thử NBehave. Tuy nhiên, chúng tôi đang sử dụng MSpec (Machine.Specifications) cho dự án Doanh nghiệp khá lớn này và nó đang hoạt động khá tốt cho chúng tôi ở đây. Rất đáng nhắc đến.

Rob Conery đã làm một video tuyệt vời trên Learning BDD, nơi ông sử dụng MSpec, từng dòng: (liên kết loại bỏ, không còn nữa, nhưng tìm kiếm cho nó)

Thông tin thêm về MSpec từ Rob Conery, và tại sao anh ta sử dụng nó.
http://wekeroad.com/2009/09/21/make-bdd-your-bff-2/ Bạn cũng có thể muốn xem các bài đăng khác của mình đã gắn thẻ BDD.

Ưu điểm:

  • Cho phép nhanh chóng "stubbing" của toàn bộ câu chuyện của bạn, Scenerios, bối cảnh, và thông số kỹ thuật - mà không có bất kỳ mã thực tế. Hãy tập trung vào "Hành vi" tổng thể, đó là mục đích của BDD !, mà không phải lo lắng về mã và làm cho nó biên dịch.
  • Tạo báo cáo HTML nổi bật, với "< - KHÔNG THỰC HIỆN" bên cạnh thông số kỹ thuật được phân tích. Tôi thường đưa báo cáo này cho: Khách hàng (CEO và CTO), Người thử nghiệm, Tài nguyên mới tôi đưa vào dự án và bất kỳ ai muốn biết phần mềm hoạt động như thế nào - không cần phải hiển thị một dòng mã!
  • Trình chạy TestDriven.NET được bao gồm với MSpec bằng cách sử dụng liên kết tdnet mới (không thiết lập!).
  • Thuộc tính [Hành vi], cùng với loại đại biểu Behaves_like, làm cho việc sao chép các thông số kỹ thuật hiện có từ một scenerio sang một scenerio khác một lần nữa.

Nhược điểm:

  • Ít hoặc không có tài liệu hướng dẫn, mặc dù không nhiều là cần thiết (xem video ở trên). Tác giả gần đây đã viết blog để được trợ giúp về tài liệu.
  • Vẫn còn mới và chỉ là một dự án phụ của tác giả (không phải là buổi biểu diễn chính). Nhưng, nó rất tích cực như bài viết này.

Hy vọng điều đó sẽ hữu ích.

+0

Tôi cũng nên thêm rằng với MSpec 0,3, bây giờ có một Á hậu thử nghiệm ReSharper. – eduncan911

+0

Cảm ơn bạn đã chia sẻ rất nhiều thông tin về khuôn khổ BDD. –

1

Bạn đã nhìn NBehave? Bạn cũng có thể muốn xem this old question. Nhưng tôi cũng muốn thêm IMHO đó, có thể thực hiện BDD bằng bất kỳ loại khung kiểm thử đơn vị nào. Một cách đơn giản về phía trước thẳng là đặt tên cho "lớp thử nghiệm" của bạn như "Given_X" và sau đó để tất cả "phương pháp thử nghiệm" của bạn có tên như "It_should_Y".

+0

1 Được làm BDD trong một thời gian khá dài mà không có khung. – jamesaharvey

+0

@ james bạn có thể thích http://storyq.codeplex.com vì nó là một khung rất nhỏ về cơ bản cung cấp cho bạn báo cáo kiểu BDD từ các bài kiểm tra đơn vị bình thường của bạn. –

6

Tôi đã xây dựng StoryQ sau khi quyết định rằng bạn không cần nhiều khung công tác. Nó rất nhẹ, được nhúng vào trong thử nghiệm hiện tại của bạn, hãy xem tại số http://storyq.codeplex.com

+0

Luôn luôn tốt đẹp để xem ai đó tạo khuôn khổ BDD của riêng mình! +1 Một bình luận OT: Trong ví dụ của bạn trên trang chủ của StoryQ, bạn hiển thị các lớp được nhúng. Thử nghiệm UNIT của ReSharper (tính đến 4.5) không hỗ trợ các lớp nhúng. Bạn nên loại bỏ trình bao bọc lớp DemoTest tốt hơn và sử dụng Namespaces tinh tế hơn thay thế. – eduncan911

+0

@ eduncan911 vâng một số khác;). Hey tôi không chắc chắn bạn có nghĩa là bởi "lớp nhúng", hệ thống phân cấp là: không gian tên StoryQ.Demo/lớp DemoTest/phương pháp PassingExample ... –

+0

Doh, bạn nói đúng. Không nhúng ở đó. :) Xin lỗi, buổi chiều bận rộn. – eduncan911

8

Tôi khuyên bạn nên thử dùng SpecFlow Thật kỳ lạ khi không ai đề cập đến nó. Có một bài viết tuyệt vời ở đây về using BDD with Specflow and Asp.Net MVC Đó là open source and is hosted on GitHub

Cú pháp cụ thể sử dụng cú pháp GWT (Cho khi nào) mà cá nhân tôi thực sự thích. Chúng tôi đã thành công lớn cho đến nay với BDD bây giờ đang cố gắng thực hiện bằng cách sử dụng SpecFlow. Đó vẫn là những ngày đầu nhưng cho đến nay nó vẫn ổn.

Ưu điểm:

  1. Tích hợp vào VS2008 & VS2010 với một plugin tốt đẹp
  2. Sử dụng phổ biến Với Khi Rồi từ vựng
  3. Sử dụng tiêu chuẩn NUnit Test Runner
  4. tập tin Tính năng cho phép bạn chỉ cần dán trong kịch bản từ Chuyên viên phân tích kinh doanh

Nhược điểm:

  1. mã tính năng đằng sau là một chút xấu xí, mặc dù không có gì để xấu
  2. Theo như tôi biết, định dạng báo cáo được khá hạn chế (i chỉ cần sử dụng NUnit)

tôi khuyến khích bạn thôi buông đi.

Các vấn đề liên quan