如何在 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);
我想在测试方法中赋值一个枚举值来检查计算方法是否正确。
我的 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);