Alternatywa dla ogórka dla .NET

80

Krótko: czy ktoś natknął się na bibliotekę podobną do ogórka Ruby'ego (czytelny dla człowieka DSL do definiowania historii przypadków użycia, które można przetestować) w sferze .NET?

piekarnik
źródło

Odpowiedzi:

91

Powinieneś także sprawdzić SpecFlow , czyli projekt open source do zrobienia BDD z .NET.

SpecFlow używa tego samego formatu definicji (Gherkin), jak ogórek, ale możesz pisać definicje kroków w .NET. Zasadniczo generuje klasy testów jednostkowych (NUnit, MsTest, xUnit itp.) Z plików funkcji, dzięki czemu można użyć tego samego silnika wykonywania testów jednostkowych, jak w przypadku prawdziwych testów jednostkowych. W ten sposób łatwiej jest również zintegrować testy funkcjonalne BDD z kompilacją integracyjną.

W najnowszych wersjach SpecFlow ma funkcję kolorowania składni dla programu Visual Studio 2010 oraz obsługę Silverlight i Mono / MonoDevelop.

Gaspar Nagy
źródło
35

Pewnie. Nazywa się Ogórek . Przykład testowania kodu .NET znajduje się w katalogu przykładów Cucumber i dokumentacji na Cucumber Wiki zarówno dla .NET, jak i Mono .

Jörg W Mittag
źródło
Próbowałem tego, ale nadal uderzałem w bum, uruchamiając opakowanie ICucumber. Komunikat, który otrzymałem, mówi, że brakuje pliku konfiguracyjnego .yml.
Owen
Wypróbowałem również wszystko, co tutaj opisano: thomaslundstrom.blogspot.com/2009/03/…
Owen
1
Domyślam się, że odnosisz się do tej wiadomości: „Nie znaleziono cucumber.yml. Zapoznaj się z dokumentacją cucumber dotyczącą definiowania profili w cucumber.yml. Aby użyć polecenia cucumber bez żadnych argumentów, należy zdefiniować profil„ default ”. 'ogórek - pomoc' do użycia. (Cucumber :: Cli :: YmlLoadError) ", prawda? Oczywiste pytanie, kiedy program narzeka, że ​​nie mógł znaleźć pliku, brzmi: czy plik faktycznie tam jest, czy nie? Ponieważ, jeśli plik nie istnieje, to dlatego, że nie można znaleźć to raczej oczywiste ...
Jörg W Mittag
1
Nadal nie rozumiem, co masz na myśli. Opublikowany link nie ma absolutnie nic wspólnego z twoim problemem. A co masz na myśli, mówiąc „ wydaje się, że plik tam jest”? Napisałeś plik, zapisałeś plik, powinieneś wiedzieć, czy tam jest, czy nie!
Jörg W Mittag
1
Twoje przykłady i linki do wiki są 404ing
mattumotu
20

Wydaje się, że w tej przestrzeni są 3 możliwości:

  1. Użyj Cucumber i IronRuby. Oto blog przedstawiający kilka kroków, aby rozpocząć. Wadą wydaje się być wydajność. Czytałem relacje, które mówią, że generalnie jest wolniejszy , i inne, które mówią, że po prostu bardzo wolno się kręci . Nie jest to jednak rozstrzygające, ponieważ IronRuby jest nadal w fazie aktywnego rozwoju.

  2. Użyj Cuke4Nuke . Słyszałem, że ten produkt był polecany kilka razy. W rzeczywistości używa zwykłego Rubiego i Ogórka, ale uruchamia kod .NET przez serwer. Na szczęście cała ta komplikacja jest przejrzysta, gdy jej używasz. Cuke4Nuke nie jest już aktywnie rozwijany.

  3. Użyj SpecFlow . To jest port .NET Cucumber. Z tego powodu może nie mieć wszystkich funkcji Ogórka i może mieć dodatkowe funkcje. Fajną rzeczą jest to, że nie musisz mieć zainstalowanego Rubiego.

W tej chwili nie wydaje się jasne, która z nich jest najlepsza. Osobiście planuję zacząć od Cuke4Nuke.

Kevin Berridge
źródło
2
Dla każdego, kto to czyta, wydaje się, że Cuke4Nuke jest przestarzały na rzecz SpecFlow richardlawrence.info/2011/10/21/the-future-of-cucumber-on-net
GuiSim
3

StoryTeller jest w pewnym sensie powiązany, mimo że nie jest to ściśle BDD. Wydaje się, że obsługuje nieco inny rodzaj testu, ale jest napisany w .NET. Przeczytaj więcej na blogu Jeremy Millersa

Johan Bergens
źródło
3

BDD w prostym języku angielskim można zrobić za pomocą Concordion.NET . Specyfikacje oczekiwanego zachowania są napisane w języku HTML.

Do testów Concordion.NET można użyć dowolnych zdań o dowolnej strukturze. Na przykład nie trzeba pisać zdania typu „mając konto bankowe z saldem 10 $, gdy inicjowana jest wypłata 20 $, transakcja kończy się niepowodzeniem”. Zamiast tego można użyć dowolnego typu zdania, na przykład „transakcja o wartości 20 $ nie powiedzie się, jeśli na koncie nie ma wystarczającego salda 10 $”.

Testy Concordion.NET są wykonywane przy pomocy NUnit, który jest zintegrowany w wielu różnych środowiskach: https://github.com/concordion/concordion-net

user3632158
źródło
2

Jest też StoryQ. Jest to skoncentrowane na programistach podejście do historyjek użytkowników, które mogą zgłaszać wycofanych klientów. http://storyq.codeplex.com

StoryQ to przenośna (pojedyncza dll), osadzona platforma BDD dla .NET 3.5. Działa w ramach istniejącego modułu uruchamiającego testy i pomaga tworzyć przyjazne dla człowieka dane wyjściowe testu (html lub tekst). Płynny interfejs StoryQ dodaje silnego pisania, inteligencji i dokumentacji do twojej gramatyki BDD.

todd
źródło