2011-11-05 9 views
14

Tôi vừa mới (hôm nay) đã thử SpecFlow lần đầu tiên. Tôi đang chơi về bằng cách tạo một thư viện lớp mới trong VS2010 Pro và thêm một tệp định nghĩa tính năng SpecFlow.SpecFlow sai khi sử dụng NUnit

Thing là, tích hợp dường như không hoạt động đúng cách, với nhiều lỗi khác nhau. Tôi đã chọn MsTest làm Á hậu thử nghiệm, bởi vì tôi không thể làm phiền với việc gọi NUnit (Tôi muốn sử dụng NUnit trong thời gian dài nhưng tại thời điểm này tôi chỉ muốn nhận được một số mã BDD làm việc). Các tập tin mã được tạo ra tuy nhiên tiếp tục tham khảo NUnit - đó là rõ ràng là sai, kể từ khi tôi vừa nói với SpecFlow để chạy bằng cách sử dụng MsTest. Tôi đã làm tất cả mọi thứ tôi có thể nghĩ đến để gọi các thế hệ mã một lần nữa, bao gồm việc tạo ra một dự án thư viện lớp mới với tùy chọn MsTest được chọn trong Tools> Options> SpecFlow.

Nếu tôi rời trường thử nghiệm được đặt thành 'Tự động' và nhấp chuột phải vào tệp tính năng, sau đó chọn 'Chạy kịch bản SpecFlow' Tôi nhận được thông báo lỗi "Không thể tìm thấy người thử nghiệm phù hợp".

Nếu thay vào đó thay đổi trường Á hậu thử nghiệm thành MsTest, tôi nhận được thông báo lỗi khác khi thực hiện điều tương tự - "Tham chiếu đối tượng không được đặt thành thể hiện của đối tượng". Tôi không ngạc nhiên vì điều này vì nó vẫn đang cố gắng chạy thử nghiệm NUnit mặc dù tôi đã yêu cầu rõ ràng cho MsTest, mặc dù rõ ràng nó không nên nullref và trình bày cho người dùng.

Tôi đang làm gì sai? Tài liệu này không hữu ích và theo như tôi thấy, không có câu hỏi thường gặp nào.

chỉnh sửa # 1: Tôi đã thiết lập rằng cài đặt thực tế tôi đang tìm được cung cấp bằng cách sử dụng App.Config bằng cách sử dụng trường <unitTestProvider name="MsTest" />. Tôi có thể thấy những gì đã xảy ra - trường trong menu tùy chọn Visual Studio dường như không sửa đổi dự án bạn hiện đang làm việc. Thing là, điều này làm cho nó trông giống như lĩnh vực đó không làm bất cứ điều gì cả. Bây giờ tôi đã thuyết phục SpecFlow tạo các lớp MsTest và chạy bằng cách sử dụng trình runner MSTest.

Vì vậy, bây giờ câu hỏi được biến thành một dạng hơi khác: Điều gì (nếu có), trường Công cụ> Tuỳ chọn> SpecFlow> Công cụ kiểm tra Runner có làm gì không?

Trả lời

1

Tôi chưa bao giờ có thể lấy SpecFlow làm việc ngay từ Visual Studio, tôi đã dành thời gian làm việc trên nó nhưng không bao giờ đi đâu cả. Mặc dù tôi tìm thấy these hướng dẫn về thiết lập NUnit trong Visual Studio 2010 và tôi sử dụng phím tắt này để chạy các thử nghiệm SpecFlow của tôi với hiệu quả tốt. Nhìn chung, chúng tôi sử dụng PowerShell để chạy nhiều thử nghiệm và tôi đã có thể kết hợp các dòng lệnh NUnit và trình tạo báo cáo SpecFlow vào một tập lệnh duy nhất mà tôi có thể chạy dễ dàng.

+0

Mẹo tuyệt vời, cảm ơn! Tôi thiết lập nút menu ngay lập tức bởi vì nó trông rất hữu ích, do đó, bất kể dòng yêu cầu này đã cung cấp một lợi ích phụ tiện dụng. Xấu hổ về SpecFlow mặc dù, có vẻ như tôi không phải là người duy nhất đã có vấn đề với nó làm những gì nó phải làm. Sản phẩm thực tế hoạt động, nhưng tích hợp VS không hoàn toàn đúng. –

+0

Vâng tôi muốn nó được tích hợp nhiều hơn nhưng bây giờ tôi vẫn ổn với điều đó. Việc sử dụng nó vượt quá lợi ích đó cho tôi ngay bây giờ. Vui mừng mẹo giúp! – MichaelF

+0

Bạn đã chạy trình cài đặt chuyên biệt hay bạn đã thêm nó vào dự án của mình bằng NuGet chưa? Trình cài đặt sẽ cài đặt tất cả các thành phần tích hợp như tích hợp Visual Studio nơi cài đặt nuget chỉ thêm các tham chiếu cần thiết. –

9

Với VS2010 giá trị chính xác là MsTest.2010 không phải MsTest như được ghi nhận. Thay đổi app.config của bạn (cho hội đồng kiểm tra) và nó sẽ hoạt động tốt (ít nhất với SpecFlow 1.8)

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" /> 
    </configSections> 
    <specFlow> 
     <unitTestProvider name="MsTest.2010" /> 
     <!-- For additional details on SpecFlow configuration options see https://github.com/techtalk/SpecFlow/wiki/Configuration --> 
    </specFlow> 
</configuration> 
7

Trả lời câu hỏi mới nhất của bạn. Cài đặt "Công cụ> Tùy chọn> SpecFlow> Công cụ kiểm tra Runner" cài đặt này kiểm soát những gì sẽ thực sự chạy thử nghiệm, chứ không phải những gì sẽ tạo mã thử nghiệm. Nếu nó được thiết lập để tự động tôi tin rằng nó sẽ xem xét các tập tin App.config nơi bạn đã thiết lập các unitTestProvider để xác định những gì công cụ tốt nhất là để chạy các bài kiểm tra. Á hậu Thử nghiệm thay thế được thực hiện bởi những kẻ giống như SpecFlow là SpecRun http://www.specrun.com/

Vì vậy, khi bạn chạy thử nghiệm, nó sẽ sử dụng tùy chọn này.Như bạn đã phát hiện mặc dù trình tạo mã sử dụng tệp cấu hình để xác định loại thử nghiệm cần tạo (mstest/nunit ..)

Nếu bạn chạy trình cài đặt chuyên biệt (https://github.com/downloads/techtalk/SpecFlow/SpecFlowSetup_v1.8.1.msi) để cài đặt tất cả các thành phần Visual Studio Intergration khi bạn thay đổi tập tin App.config nó thường khởi động lại các tính năng sử dụng nhà cung cấp mới. Cách thủ công để thực hiện việc này là nhấp chuột phải vào đối tượng địa lý và chọn "Chạy công cụ tùy chỉnh"

Về tài liệu bạn đã tìm thấy git hub wiki? https://github.com/techtalk/SpecFlow/wiki/Documentation

2

Chúng tôi đang sử dụng ReSharper làm người chạy thử nghiệm chấp nhận SpecFlow; nó hoạt động tốt ngay trong hộp. Mặc dù ReSharper không miễn phí, nhưng nó đáng giá mỗi xu ...