2011-11-05 15 views
14

Właśnie (dzisiaj) wypróbowałem SpecFlow po raz pierwszy. Zajmuję się tworzeniem nowej biblioteki klas w VS2010 Pro i dodawaniem pliku definicji funkcji SpecFlow.SpecFlow błędnie używa NUnit

Rzecz polega na tym, że integracja nie działa prawidłowo, z wieloma różnymi błędami. Wybrałem MsTest jako biegacz testowy, ponieważ nie mogę sobie pozwolić na wywoływanie NUnit (chciałbym używać NUnit na dłuższą metę, ale w tej chwili chcę tylko uruchomić jakiś kod BDD). Generowane pliki kodu nadal odwołują się do NUnit - co jest oczywiście błędne, ponieważ właśnie powiedziałem SpecFlow, aby działał przy użyciu MsTest. Zrobiłem wszystko, co mogłem wymyślić, aby ponownie wywołać generowanie kodu, w tym stworzenie zupełnie nowego projektu biblioteki klas z opcją MsTest wybraną w menu Narzędzia> Opcje> SpecFlow.

Jeśli zostawiam pole testu biegacza ustawione na "Auto" i kliknę prawym przyciskiem myszy plik operacji, a następnie wybierz "Uruchom scenariusze typu SpecFlow" Pojawia się komunikat o błędzie "Nie można znaleźć pasującego biegacza testu".

Jeśli zamiast tego zmienię pole testu biegowego na MsTest, otrzymam inny komunikat o błędzie przy robieniu tego samego - "Odniesienie do obiektu nie jest ustawione na instancję obiektu". Nie jestem tym zaskoczony, ponieważ wciąż próbuje uruchomić testy NUnit, mimo że wyraźnie poprosiłem o MsTest, chociaż oczywiście nie powinien on nullref i przedstawić tego użytkownikowi.

Co robię źle? Dokumentacja nie jest pomocna i, o ile widzę, nie ma FAQ.

edit # 1: Mam ustalone, że rzeczywisty ustawienie szukam jest za pomocą App.Config użyciu pola <unitTestProvider name="MsTest" />. Widzę, co się stało - pole w menu opcji Visual Studio nie wydaje się modyfikować projektu, nad którym obecnie pracujesz. Chodzi o to, że wygląda na to, że to pole nic nie robi. Teraz przekonałem SpecFlow do wygenerowania klas MsTest i uruchomienia przy użyciu MSTest runner.

Teraz pytanie zmienia się w nieco inne: Co (jeśli coś) robi narzędzie Narzędzia> Opcje> SpecFlow> Pole narzędzia Run Runner?

Odpowiedz

1

Nigdy nie udało mi się uzyskać działania SpecFlow od Visual Studio, spędziłem trochę czasu nad nim, ale nigdy nigdzie nie chodzę. Chociaż znalazłem these instrukcje dotyczące konfigurowania NUnit w Visual Studio 2010 i używam tego skrótu do uruchamiania moich testów SpecFlow z dobrym skutkiem.

Ogólnie używamy PowerShell do uruchomienia wielu testów i udało mi się włączyć biegacz wiersza poleceń NUnit i generator raportów SpecFlow do pojedynczego skryptu, który mogę łatwo uruchomić.

+0

Wielka wskazówka, dzięki! Natychmiast ustawiłem przycisk menu, ponieważ wyglądało to tak użytecznie, więc niezależnie od tego rodzaju zapytania zapewniłem przydatną korzyść. Szkoda jednak, że SpecFlow nie jest jedyną osobą, która miała problemy z robieniem tego, co powinna. Rzeczywisty produkt działa, ale integracja VS nie jest właściwa. –

+0

Tak, chciałbym, żeby było bardziej zintegrowane, ale na razie jestem z tym w porządku. Jego użycie przewyższa teraz tę korzyść dla mnie. Cieszę się, że wskazówka pomaga! – MichaelF

+0

Czy uruchomiłeś instalator Specflow lub czy dodałeś go do swojego projektu za pomocą NuGet? Instalator zainstaluje wszystkie komponenty integracyjne, takie jak integracja Visual Studio, w której instalacja nuget dodaje tylko niezbędne odniesienia. –

9

Z VS2010 poprawna wartość to MsTest.2010, a nie MsTest jako udokumentowana. Zmienić app.config (dla zespołu testowego) i będzie działać dobrze (przynajmniej z 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

w odpowiedzi do najnowszej pytanie. Jakie jest ustawienie "Narzędzia> Opcje> SpecFlow> Narzędzie Run Runner" to ustawienie kontroluje, co faktycznie uruchomi testy, a nie co wygeneruje kod testowy. Jeśli jest ustawiony na auto, wierzę, że zajrzy do pliku App.config, w którym ustawiono unitTestProvider, aby określić, jakie najlepsze narzędzie jest do przeprowadzenia testów. Alternatywny biegacz testowy wykonany przez tych samych gości co SpecFlow to SpecRun http://www.specrun.com/

Kiedy więc przejdziesz do testów, skorzystasz z tej opcji.Jak już odkryłeś, generator kodu wykorzystuje plik konfiguracyjny do określenia typu testu, jaki powinien wygenerować (mstest/nunit ..)

Jeśli uruchomiłeś instalator specyfikacji (https://github.com/downloads/techtalk/SpecFlow/SpecFlowSetup_v1.8.1.msi), aby zainstalować wszystkie komponenty Visual Studio Integration, gdy zmieniasz plik App.config, który zwykle prosi o ponowne wygenerowanie funkcji za pomocą nowego dostawcy. W tym celu należy jednak kliknąć prawym przyciskiem myszy i wybrać opcję "Uruchom narzędzie niestandardowe" "Uruchom narzędzie niestandardowe"

Jeśli chodzi o dokumentację, czy znalazłeś wiki git hub? https://github.com/techtalk/SpecFlow/wiki/Documentation

2

Używamy ReSharper jako biegacza do testów akceptacyjnych SpecFlow; działało dobrze zaraz po wyjęciu z pudełka. Chociaż ReSharper nie jest darmowy, ale wart każdego grosza ...