如何在 Junit 中分配枚举值?

How to assign enum value in Junit?

我想在测试方法中赋值一个枚举值来检查计算方法是否正确。

我的 unum 代码如下:

public enum ScoreCalculationEnum {
    SCE_MTS100("100 Mts", new BigDecimal("25.4347"), new BigDecimal("18"), new BigDecimal("1.81")) {
        @Override
        public BigDecimal toDoCalculate(String scoreEvent) {
            CalculationService cs = new CalculationService();
            return cs.calculateForTrackEvent(DistanceAndTimeConvertingService.getSecond(scoreEvent), this);
        }
    },
    SCE_LONGJUMP("Long Jump", new BigDecimal("0.14354"), new BigDecimal("220"), new BigDecimal("1.4")) {
        @Override
        public BigDecimal toDoCalculate(String scoreEvent) {
            CalculationService cs = new CalculationService();
            return cs.calculateForFieldEvent(DistanceAndTimeConvertingService.getCentimeters(scoreEvent), this);
        }
    }
}

我的方法是:

public BigDecimal calculateForTrackEvent(BigDecimal P, ScoreCalculationEnum score) {
        return blabla;
    }

我的测试代码是:

@DisplayName("Score calculation test for track event")
    @Test
    public void calculateForTrackEvent() {
        BigDecimal P = new BigDecimal(12.609999656677246);
       ScoreCalculationEnum scoreCalculationEnum = new ScoreCalculationEnum (new BigDecimal("25.4347"), new BigDecimal("18"), new BigDecimal("1.81"));
    }

在我的测试方法中,我无法赋值这个枚举值来调用原始方法。我怎样才能改变这条线;

ScoreCalculationEnum scoreCalculationEnum = new ScoreCalculationEnum (new BigDecimal("25.4347"), new BigDecimal("18"), new BigDecimal("1.81"));

我收到“ScoreCalculationEnum 是抽象的,无法实例化”错误。

枚举总是在编译时定义的,你不能动态创建新的。 如果您想测试该 calculateForTrackEvent 方法,您将需要调用您为此声明的枚举:

SCE_MTS100.toDoCalculate(score);