首页 > 解决方案 > JUnit 最大值/最小值

问题描述

如何从 Map 值中测试 Bigdecimal 最大值?

我最初使用对象映射器来映射字符串。

字符串包含特定货币的日期和汇率。

我想创建一个测试最大值/最小值的方法。

很高兴知道测试 LocalDate 的方法。

Map.Entry<LocalDate, BigDecimal> getMinRate(Response response) {
        return Collections.min(response.getBpi().entrySet(), Map.Entry.comparingByValue());
    }

标签: javatestingjunit

解决方案


我希望我能正确回答您的问题:

ResponseUtilTest.class

import org.junit.Test;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;

public class ResponseUtilTest {

    @Test
    public void bigDecimalIsMinimumAndLocalDateAreValid() {
        ResponseUtil responseUtil = new ResponseUtil();
        Map<LocalDate, BigDecimal> bpi = new HashMap<>();
        bpi.put(LocalDate.of(2018, 10, 23), BigDecimal.valueOf(10));
        bpi.put(LocalDate.of(2018, 10, 22), BigDecimal.valueOf(20));
        bpi.put(LocalDate.of(2018, 10, 21), BigDecimal.valueOf(30));

        Map.Entry<LocalDate, BigDecimal> minRate = responseUtil.getMinRate(new Response(bpi));

        assertEquals(LocalDate.of(2018, 10, 23), minRate.getKey());
        assertEquals(BigDecimal.valueOf(10), minRate.getValue());
    }
}

ResponseUtil.class

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Collections;
import java.util.Map;

public class ResponseUtil {
    Map.Entry<LocalDate, BigDecimal> getMinRate(Response response) {
        return Collections.min(response.getBpi().entrySet(), Map.Entry.comparingByValue());
    }
}

推荐阅读