Co się zmieniło?
- Zmieniłem moje wynalazki: Subject i Example na standardowe w BDD Story i Scenario. One może troszkę gorzej oddają o co chodzi, ale za to są spójne z zapisem Dana North'a używanym m.in. w JBehave, NBehave i jeszcze pewnie gdzieś indziej. A nuż ktoś będzie się chciał zmigrować, to będzie miał łatwiej. A i czytelnicy Dan'owych artykułów od razu zmapują sobie jego idee na Tumblerową rzeczywistość.
- Dodałem raporty w HTML. Jeśli to ma być narzędzie używane jakoś przez biznes, to musi być dla nich czytelne. Można używać własnych szablonów (freemarker) albo domyślnego. Zgodnie z sugestią Szczepana Fabera jest też "spis treści" dla stories, wraz ze statystykami wykonania dla całego projektu.
- Za namową Lasse Koskeli usunąłem @CamelCase. Jeśli ktoś nie chce pełnych zdań w eclipsie, to niech sobie ustawi zmienną -DcamelCase=true. W ten sposób nie wpływa na resztę zespołu.
Bardzo chciałbym się dowiedzieć co myślicie o tym narzędziu. Co można by dodać, co powinno być inaczej.
Tumbler działa tylko z nowymi wersjami JUnit'a. Wersja domyślnie będąca w eclipsie, jest dość stara (i buggy) - 4.5. Do poprawnego działania Tumbler wymaga wersji 4.8. Użycie starszej wersji JUnit'a skutkuje następującym wyjątkiem:
java.lang.NoSuchMethodError: org.junit.runner.Description.getMethodName()Ljava/lang/String;
at tumbler.internal.ScenarioListener.isItSingleScenario(ScenarioListener.java:97)
at tumbler.internal.ScenarioListener.testStarted(ScenarioListener.java:92)
at org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:83)
Wyobraź sobie, że właśnie pisałem testy jednostkowe i postanowiłem ponownie przymierzyć się do użycia Tumblera. Wszedłem na stronę, a tu "Tumbler 0.2.0 uploaded 90 mins ago" :D Ale mam szczęście... w nieszczęściu, bo mi nie działa :(
OdpowiedzUsuńPonownie przymierzyłem się, bo poprzednio miałem to samo. Otóż dodałem Runnera, dodałem annotacje @Story("nazwa") i @Scenario(pending=true) oraz given(), when() i then(). Odpaliłem JUnita i... crash.
java.lang.NoSuchMethodError: org.junit.runner.Description.getMethodName()Ljava/lang/String;
at tumbler.internal.ScenarioListener.isItSingleScenario(ScenarioListener.java:97)
at tumbler.internal.ScenarioListener.testStarted(ScenarioListener.java:92)
at org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:83)
at org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:38)
at org.junit.runner.notification.RunNotifier.fireTestStarted(RunNotifier.java:80)
at org.junit.internal.runners.model.EachTestNotifier.fireTestStarted(EachTestNotifier.java:41)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at tumbler.TumblerRunner.runChild(TumblerRunner.java:46)
(...)
Może jestem nieuważny i robię coś źle, ale w takim razie zdarza mi się dokładnie to samo drugi raz.
W dokumentacji jest napisane, żeby używać nowego JUnit'a. Ten co masz w eclipsie, to 4.5 - wersja z przed chyba 2 lat... Wrzuć najnowszego i będzie działać.
OdpowiedzUsuńAle jesteś dobrym papierkiem lakmusowym - muszę to dużymi literami wrzucić na stronę...
Powodzenia!