2011-10-17 12 views
10

Załóżmy, że mam klasę Order, która może być w trzech różnych stanach: CheckedState, PaidState i OrderedState.Jak przeprowadzić test urządzenia stanu?

Maszyna stanu zostanie zaimplementowana przy użyciu standardowego wzoru wzorcowego (Gof).

Jak zwykle testujesz to urządzenie? Czy używasz urządzenia dla każdej klasy stanu (CheckStateFixture, PaidFixture, ...) i siebie nawzajem (OrderFixture) dla klasy kontekstu? Czy używasz tylko jednego urządzenia do klasy kontekstowej (Order), w której przeprowadzisz wszystkie testy jednostkowe?

Odpowiedz

5

Preferuję utrzymanie infrastruktury państwa oddzielnie od samej jednostki. Więc trzeba

  • Podmiot klasa (Zamówienie)
  • klas państwowe infrastruktury

Dla States Infrastruktury Proponuję za pomocą jednego uchwytu do jednego podmiotu, więc jeden OrderStateFixture na zamówienie States infrastruktura będzie wystarczająco .

Podstawowe testy byłyby testów, który zapewnia, że ​​stan Zamówienie przełącza prawidłowo:

  • Upewnić się, że stan początkowy kolejności jest notchecked
  • Po udanej realizacji przełączników Order.Paid(amount) sposób Order.State do Płatny
  • If Order.Verify() zwraca true/przechodzą bez wyjątku - Order.State zostaje sprawdzone/Verified
+0

dzięki za odpowiedź! Chciałbym jednak wyjaśnienie, czy umieściłbyś te testy przejścia w OrderFixture lub w OrderStateFixture? –

+0

To zależy od tego, kto jest odpowiedzialny za przejście, jeśli zlecenie samo się przeniesie - będzie to albo OrderFixture, albo OrderStateFixture – sll

+0

Brzmi nieźle, dziękuję! –

Powiązane problemy