2015-03-12 17 views
5

Zajmuję się tworzeniem aplikacji, która polega w znacznym stopniu na Joda-Money, i mam szereg testów jednostkowych, które sprawdzają moją logikę biznesową. Jednym (co prawda nieistotnym) punktem styczności było dla mnie to, jakie obiekty testować; konkretnie, z czego korzystać.Jaką walutę użyć w testach jednostkowych?

Jak ja to widzę, mam kilka opcji:

  • Wystarczy użyć USD

    Jest to oczywiście najprostszym sposobem, aby przejść, a większość mojej aktualnej aplikacji będzie pracować z USA Dolary, więc ma to sens. Z drugiej strony wydaje mi się, że koncentruje się na Stanach Zjednoczonych, i obawiam się, że pozwoliłoby to na uniknięcie błędów specyficznych dla waluty.

  • pomocą drugiego prawdziwa waluta, jak CAD

    To złapać błędnych twardych codings od USD, ale poza tym nie jest dużo lepiej niż tylko za pomocą USD.

  • użyć dedykowanego "fake" currency, tj XTS

    To wyraźnie ma sens, mimo wszystko, XTS jest „zarezerwowana do użycia w badaniach”. Ale Joda oznacza waluty pseudo-waluty jako waluty z miejscami dziesiętnymi -1. W praktyce podstawową różnicą między walutami w Joda-Money jest liczba miejsc dziesiętnych, więc może to maskować wszelkie błędy z dokładnością do miejsca dziesiętnego, takie jak błędne zaokrąglenie do wartości całkowitej.

  • zarejestrować własną niestandardową waluty z CurrencyUnit.registerCurrency()

    To oczywiście działa, ale wydaje się to trochę dziwne, skoro istnieją alternatywy.

  • Użyj CurrencyUnit instancji utworzonego przez drwiącym biblioteki

    niemal tak samo jak rejestracji niestandardowego waluty.

Ponownie, jest to oczywiście niewielki problem, ale jestem ciekaw, czy jest to standardowa praktyka w takich przypadkach, lub jeśli istnieje wyraźny powód, aby preferować jeden z tych opcji w szczególności.

+0

Nie wydaje mi się to mniej ważne. Zamierzasz rozłożyć tę decyzję na wszystkie swoje testy jednostkowe? Jeśli nie możesz podjąć tej decyzji w jednym miejscu, masz zamiar utknąć z nią na zawsze. – CandiedOrange

+0

@CandiedOrange się zgodziło, ale otrzymałem inne pytania z pytaniem "dlaczego tracisz na to swój czas?!?!?!?!?!" odpowiedzi, więc wywoływanie wszystkich moich ciekawostek "drobnych" obaw to trochę mechanizmu obronnego. – dimo414

+2

Kapłani nienawidzą. Ciągle pytaj, bądź optymistą, a miłość cię odnajdzie. Pokój. – CandiedOrange

Odpowiedz

2

Używaj USD (lub, ogólnie, jakiejkolwiek waluty najczęściej używasz w swoim zgłoszeniu). Mówię to z dwóch powodów:

  • Dobre dane badanie jest nijaki pod każdym względem z wyjątkiem tej części, która jest faktycznie test o. Kiedy piszesz testy, które nie mają nic wspólnego z różnicami między walutami, nie musisz myśleć o różnicach między walutami. Wystarczy użyć tego, co jest najbardziej naturalne w aplikacji.

  • Pomysł, że używanie wszędzie nietypowej waluty w jakiś sposób spowoduje lepsze testowanie nietypowych walut, jest czerwonym śledziem. Testy powinny być jednoznaczne i ukierunkowane. Jeśli chcesz przetestować coś na temat konkretnej waluty, napisz test, którego celem jest sprawdzenie tego.A jeśli test nie dotyczy konkretnej waluty, nie powinien się zepsuć, gdy zajmiemy się jakimś niecodziennym aspektem tej waluty - nie ma sensu, aby z tego samego powodu wypadła połowa testów; chcesz tylko, żeby się złamał. Nie ma więc potrzeby rozsiewania niezwykłych walut wokół zestawu testowego i mam nadzieję, że coś to złapie. Zamiast tego optymalizuj pod kątem czytelności; patrz punkt 1.

+1

Dzięki, te racjonalne pierścienie są dla mnie bardzo prawdziwe. Jeśli piszę dowolny kod, który jest wyraźnie zależny od waluty, powinienem testować go w wielu walutach, nie opierając się na strukturze testowania, aby wprowadzić dla mnie przypadki przewrotności. – dimo414

Powiązane problemy