piątek, 14 maja 2010

Tumbler 0.2.0

Przez ostatnie dwa tygodnie znowu znalazłem trochę czasu i dorobiłem do Tumblera rzeczy, których brakowało. Dzięki temu wydałem właśnie wersję 0.2.0. W sumie powinienem chyba dobić do 1.0.0, bo w tej chwili ma on wszystkie podstawowe cechy takiego narzędzia, ale jakoś jeszcze nie jestem przekonany do takiego skoku w numerku.
Co się zmieniło?
  1. 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ść.
  2. 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.
  3. 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.
W sumie więc nie ma tak dużo nowości, ale z drugiej strony myślę, że użyteczność narzędzia wzrosła znacznie.

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)

2 komentarze:

  1. 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 :(
    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.

    OdpowiedzUsuń
  2. 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ć.
    Ale jesteś dobrym papierkiem lakmusowym - muszę to dużymi literami wrzucić na stronę...

    Powodzenia!

    OdpowiedzUsuń