2017-11-07 3 views
-1

私のbigdecimal値が修正後も縮尺に設定されているかどうかをテストするとき、初期化エラーが発生します。 Eclipseでは、アサーションは非推奨となっています。 bigDecimalの値をdoubleと比較するとき、アサーションを適切に作成するにはどうすればよいですか?BigDecimal値をテストする

public Account(double startBalance){ 
     this.acctId=currId; 
     currId= currId + counter; 
     balance = new BigDecimal(startBalance); 
     balance = balance.setScale(2, BigDecimal.ROUND_FLOOR); 
    } 

テストケース:

@Test 
public void testIfBigDecimalIsSetToScale(){ 
    BigDecimal depositAmountToTest = new BigDecimal(34.12345678); 
    BigDecimal expectedAmount = new BigDecimal(34.12); 
    classUnderTest.setCorrection(depositAmountToTest); 

    assertEquals(expectedAmount.doubleValue(), classUnderTest.getBalance()) 
} 
+0

bigdecimalのスケーリングされていない値を使用して、それに対してアサーションを作成できます。 –

+1

現在のアサーション(下書き)のコードサンプルを提供してください。 – Sauer

+0

私の問題は、最初のBigDecimalがデポジット後も小数点以下2桁に丸められているかどうかを確認するアサーションを作成することです。 –

答えて

1

そのスケールのデフォルトとして、二重の持つコンストラクタを避けてください。

BigDecimal depositAmountToTest = new BigDecimal("34.12345678"); // Scale 8 
BigDecimal expectedAmount = new BigDecimal("34.12"); // Scale 2 
+0

ありがとうございました!アサーションに対してcompareToメソッドを使用する必要がありますか?私はGoogleとBigDecimalオブジェクトの値を返すメソッドのJavaオラクルのドキュメントを検索しています。私はそれがどのように動作するかについて深く理解していないと思います。私はdoubleValueメソッドを使って値を比較しようとしましたが、eclipseはこれに不満です。 –

+0

'compareTo'はスケールに関係なく比較します。 'equal BigDecimal(" 1.00 ")。equals(new BigDecimal(" 1 "))'は、スケールが異なるので、falseです。だからここで 'Assert.assertEquals(expectedAmount、depositAumountToTest);'(惨めに失敗する)を実行することができます。 –