dim*_*414 6 java unit-testing joda-money
我正在开发一个严重依赖Joda-Money的应用程序,并且有许多单元测试来验证我的业务逻辑.对我来说,一个(不可否认的是次要的)关键点是用什么样的Money/ BigMoney对象进行测试; 具体来说,CurrencyUnit使用什么.
在我看来,我有几个选择:
只是用 USD
这显然是最简单的方法,我的大多数实际应用都将使用美元,因此它有一定的意义.另一方面,它感觉相当以美国为中心,我担心它会冒险让特定货币的错误不受控制.
使用另一种真实货币,比如 CAD
这会捕获错误的硬编码USD,但除此之外并没有比使用更好USD.
使用专用的"假"货币,即XTS
毕竟,这显然XTS是"保留用于测试".但Joda将伪货币表示为带-1小数位的货币.实际上,Joda-Money中货币之间的主要区别是小数位数,因此这可能会掩盖涉及小数位精度的任何错误,例如错误地舍入为整数值.
注册我自己的自定义货币 CurrencyUnit.registerCurrency()
这显然有效,但看起来有点奇怪,因为有其他选择.
使用CurrencyUnit由模拟库创建的实例
与注册自定义货币几乎相同.
再次,这显然是一个小问题,但我很好奇是否有这样的案例的标准做法,或者是否有明确的理由特别喜欢这些选项之一.
使用美元(或者一般来说,您的应用程序中最常用的任何货币)。我这么说有两个原因:
好的测试数据除了测试实际涉及的那部分之外,在各个方面都不起眼。当您编写与货币之间的差异无关的测试时,您不想考虑货币之间的差异。只需使用应用程序中最自然的内容即可。
认为在任何地方使用不寻常的货币都会以某种方式更好地测试不寻常的货币,这种想法是一种转移注意力的想法。测试应该明确且有重点。如果您需要测试有关特定货币的某些内容,请编写一个测试,其目的是测试该内容。如果测试与特定货币无关,那么在处理该货币的某些不寻常方面时,它不应该崩溃——因为同样的原因让一半的测试失败是没有价值的;你只想要一个坏掉。因此,没有必要在测试套件中散布不寻常的货币并希望这能捕获一些东西。相反,优化可读性;参见第 1 点。
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |