2015-03-12 23 views
5

Joda-Money ürününe dayanan ve iş mantığımı doğrulayan bir dizi birim testine sahip bir uygulama geliştiriyorum. Benim için bir (kuşkusuz önemsiz) yapışma noktası, hangi tür Money/BigMoney nesnesi ile test edilecek; Özellikle, CurrencyUnit kullanması.Birim testlerinde hangi para birimi kullanılır?

Gördüğüm kadarıyla, ben birkaç seçenek vardır:

  • Sadece Bu açıkça gitmek için en kolay yoludur USD

    kullanın ve benim asıl uygulamanın en ABD ile çalışıyor olacak Dolar bu yüzden biraz mantıklı. Öte yandan, ABD merkezli olmakta ve para birimine özgü hataların kontrol edilmesine izin vermeyeceğinden endişeleniyorum. Bu aksi USD hatalı sert codings yakalamak, ancak ediyorum CAD

    gibi

  • kullanın başka gerçek para, sadece USD kullanarak çok daha iyi değildir. Bu açıkça mantıklı yani XTS

  • kullanın adanmış "fake" currency, sonuçta, XTS "testinde kullanılmak üzere ayrılmış" olduğunu. Ancak Joda, -1 ondalık basamaklı para birimleri olarak para birimleri cinsinden para birimlerini ifade eder. Pratikte, Joda-Money'deki para birimleri arasındaki temel fark, ondalık basamakların sayısıdır, bu nedenle hatalı bir şekilde bir tamsayı değerine yuvarlama gibi ondalık basamak hassasiyetini içeren herhangi bir hatayı maskeleme riski taşır.

  • Bu açıkça çalışacak CurrencyUnit.registerCurrency()

    ile kendi özel para Kayıt ama alternatifi olarak biraz garip görme gibi görünüyor.

  • dalga geçen bir kütüphaneye

    Hemen hemen

    Özel para birimi kaydederek aynı yarattığı bir CurrencyUnit örneği kullanın.

Yine, bu besbelli küçük bir sorun olmakla birlikte, bu gibi durumlar için bir standart uygulama var mı diye merak ediyorum, ya da özellikle bu seçeneklerden birini tercih etmeye açık bir sebebi varsa.

+0

Bu benim için önemsiz görünmüyor. Bu kararı tüm birim testlerinizde yaymak üzeresiniz. Eğer bu kararı tek bir yerde yapamazsanız, o zaman sonsuza kadar onunla takılmak üzeresiniz. – CandiedOrange

+0

@CandiedOrange kabul etti, fakat başka sorularım da "neden bu kadar zamanınızı harcıyorsunuz?" Ile şımartıldım: "!?!?!?!?!" Yanıtlar, tüm meraklarımı "minör" endişelere çağırmak, bir savunma mekanizmasının bir parçasıdır. – dimo414

+2

Haters nefret edecek. Sormaya devam et, iyimser ol ve aşk seni bulacak. Barış. – CandiedOrange

cevap

2

USD (veya genel olarak, uygulamanızda en sık kullanılan para birimi ne olursa olsun) kullanın. Ben iki nedenden dolayı bu demek:

  • İyi test veri testi hakkında aslında bunun bir kısmının haricinde her açıdan özellik. Para birimleri arasındaki farklarla ilgisi olmayan testler yazarken, para birimleri arasındaki farklılıkları düşünmek istemezsiniz. Sadece uygulamada en doğal olanı kullanın.

  • Her yerde olağandışı bir para birimi kullanılmasının alışılmadık para birimlerinin daha iyi test edilmesine neden olacağı fikri kırmızı bir ringa balığıdır. Testler açık ve odaklı olmalıdır. Belirli bir para birimiyle ilgili bir şeyi test etmeniz gerekiyorsa, bu noktayı test etmek için bir test yazınız.Ve eğer bir test belirli bir para birimiyle ilgili değilse, bu para biriminin bazı alışılmadık yönlerini ele alırken kırılmamalıdır - testlerinizin yarısının aynı sebepten dolayı kırılması değerli değildir; Sadece bir tane kırılmasını istiyorsun. Yani, test paketinin etrafında sıra dışı para birimleri yaymaya gerek yok ve bunun bir şeyleri yakalayacağını umuyoruz. Bunun yerine, okunabilirlik için optimize edin; bakınız nokta 1.

+1

Teşekkürler, bu rasyonel yüzükler benim için oldukça doğru. Açık bir şekilde para birimine bağlı bir kod yazıyorsam, benim için kenar durumlarını tanıtmak için test çerçevesine güvenmemek kaydıyla bunu birden fazla para biriminde test etmem gerekir. – dimo414

İlgili konular