2011-12-14 11 views

Trả lời

8

Tôi đang sử dụng nó trong dự án hiện tại của mình.

Tôi đang sử dụng SpecFlow để kiểm tra giao diện người dùng (Web client) và cho một số kiểm tra nhập.

Để kiểm tra đơn vị, tôi đang sử dụng Machine.Specifications.

Tôi nghĩ SpecFlow phù hợp với tác vụ tốt. Tôi có sự hỗ trợ từ chuyên gia yêu cầu, người kiểm tra chạy nước rút và đôi khi người quản lý dự án viết thông số kỹ thuật có nghĩa là tôi có thể tập trung vào việc thực hiện các tính năng thay vì đọc thông qua các yêu cầu kỹ thuật nặng.

Về mặt kỹ thuật tôi sử dụng CassiniWebDev để lưu trữ dự án máy khách web và Process.Start đơn giản cho các điểm cuối NServiceBus cho các thử nghiệm sử dụng vòng tròn đầy đủ. Tôi sử dụng Selenium cho các bài kiểm tra UI web và FluentAutomation trên đó. Phải mất một vài ngày để thiết lập tất cả, nhưng nó chắc chắn giá trị nó.

Tôi tạo báo cáo SpecFlow, sử dụng Pickles để hiển thị các tính năng cho web và chụp ảnh màn hình với Selenium và xuất bản toàn bộ nội dung trên trang web dự án để tất cả các bên liên quan có thể nhìn thấy những gì đang diễn ra và những gì hiện tại.

Tôi muốn giới thiệu SpecFlow cho dự án BDD/CQRS.

+0

cảm ơn Mikael đã chia sẻ, điều lạ tôi không thể tìm thấy ví dụ phù hợp. hầu hết trong số họ đề cập đến MSpec có thể do thời gian mới nổi. Những gì tôi đã thấy trong một ví dụ có vẻ chủ yếu là chi tiết so sánh cách tiếp cận của Mark Nijhof vẫn ngắn gọn. Tôi muốn xem phần nào với SpecFlow – mobygeek

+0

Còn chờ tin nhắn lọc qua hệ thống thì sao? Làm thế nào để bạn làm điều đó? – iwayneo

4

Tôi đã sử dụng Machine.Spec để thử nghiệm CQRS với BDD. Theo quan điểm của tôi, nó hoạt động khá tốt. Ví dụ:

Establish context =() => 
     { 
      // set up your fakes & mocks here... 
     }; 

    Because of =() => 
     { 
      _bus.Send(_createNewCustomer); 
      _version++; 
     }; 

    It should_create_a_customer =() => 
     { 
      _repository.GetById(_id).Id.ShouldEqual(_id); 
     }; 

    It should_publish_a_customer_Created_event =() => 
     { 
      _subscriber.HandledEvents.Count.ShouldEqual(1); 
      _subscriber.HandledEvents.First().Value.ShouldBeOfType(typeof(CustomerCreatedEvent)); 
     }; 

    Cleanup Clear_Context =() => _subscriber.HandledEvents.Clear();