Jest to ogólne pytanie dotyczące śrub do testowania jednostek i spustów w topologii burzowej napisanej w języku Java.Testowanie śrub burzowych i wylewek
Jakie jest zalecane praktyki i wytyczne dla testów jednostkowych (JUnit-?) Śruby i Wylewki?
Na przykład, mogę napisać test JUnit do Bolt
, ale bez pełnego zrozumienia ramy (jak w cyklu życia Bolt
) oraz implikacje serializacji, łatwo popełnić błąd tworzenia Konstruktor opartej non-serializable zmienne składowe. W JUnit test ten przejdzie, ale w topologii nie zadziała. W pełni wyobrażam sobie, że istnieje wiele punktów testowych, które należy wziąć pod uwagę (np. Ten przykład z cyklem życia serializacji &).
Dlatego zaleca, że jeśli używasz testów jednostkowych JUnit oparte prowadzisz małą mock topologii (LocalMode
?) I test dorozumianą umowę na Bolt
(lub Spout
) pod tym topologii? Czy może używać JUnit, ale implikuje to, że musimy symulować cykl życia Bolta (tworzenie go, wywoływanie prepare()
, kpiny z Config
itd.) Uważnie? W takim przypadku, jakie są ogólne punkty testowe dla badanej klasy (Bolt/Spout) do rozważenia?
Co zrobili inni deweloperzy, jeśli chodzi o tworzenie odpowiednich testów jednostkowych?
Zauważyłem, że istnieje API do testowania topologii (patrz: https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java). Czy lepiej używać niektórych z tych API i wstawiać "Topologie testowe" dla każdego pojedynczego użytkownika (i sprawdzać domyślną umowę, którą musi zapewnić Śruba, np. - Zadeklarowane wyjścia)?
Dzięki
Czy kiedykolwiek zdecydować się na podejściu? –
Cóż, czytam odpowiedzi poniżej. Wygląda na to, że istnieją pewne ogólne wytyczne, ale nic nie jest przesądzone. Zamierzam pozostawić to pytanie otwarte jeszcze przez jakiś czas, aby przekonać się, czy ktoś ma jakieś myśli, a potem je zamknąć. Podoba mi się oba podejścia do korzystania z Testing API (TestingApiDemo.java), a także twoja odpowiedź na kpiny z zależności @ChrisGerken. – Jack