私はJava EnumMapを初期化することが別のHashMapの値で可能であることを確認しましたが、これはテストによるものです。私は、効率的な二重括弧などを使う必要はありません。マップからマップを作成するだけです。EnumMap HashMapからの初期化
public EnumMap<ITEMS, Map<String, Double>> getPromotionItems(String state, Map<String, Double> prices) {
EnumMap<ITEMS, Map<String, Double>> promoItems = new EnumMap<>(ITEMS.class);
Iterator iterator = prices.entrySet().iterator();
Iterator keys = prices.keySet().iterator();
HashMap map = new HashMap<String, Double>();
while(keys.hasNext()) {
map.put(iterator.next(),keys.next());
}
promoItems.put(ITEMS.valueOf(state),map);
return promoItems;
}
私はJUnitの中で書いていると、これは私のイテレータは何とか
java.lang.AssertionError: expected: java.util.EnumMap<{ORIGINAL={ProductC=3.0, ProductA=1.0, ProductB=2.0}}> but was: java.util.EnumMap<{ORIGINAL={ProductC=3.0, ProductA=1.0, ProductB=2.0}}>
私は私のクラスに一つだけenumMapを使用するために必要な SOLUTIONとユニットテストが呼び出す間違っていると言いますテストクラスenumMapを使用してメソッドを呼び出します。
これは私のテストクラスであった:TestClassForItems.java起因する主からインスタンスに同じ文字列の結果が、異なるオブジェクトの使用を返す パブリック列挙項目{ ONPROMO、ORIGINAL、OFFPROMO }
@Test
public void onRedLinePromotionListOriginalPriceTest() {
testPromoState = "ORIGINAL";
testPrices.put("Product_A", 1.00);
testPrices.put("Product_B", 2.00);
testPrices.put("Product_C", 3.00);
expectedPrices = testPrices;
expectedGoodsMap.put(TestClassForItems.ITEMS.ORIGINAL, testPrices);
assertSame(expectedGoodsMap, TestClass.getPromotionItems(TestClassForItems.ITEMS.ORIGINAL,testPrices));
}
私のJunitテストを実行するのに必要なすべての属性。
生の種類は使用しないでください。 – shmosel
@shmoselは今編集してあなたの考えを見て編集を行いました。 –
あなたが何を変更したのか分かりませんが、 'iterator'、' keys'、 'map'はすべて生の型を使用しています。 – shmosel