gpt4 book ai didi

java - 即使预期结果正确,JUnit 测试也会失败

转载 作者:行者123 更新时间:2023-12-01 18:39:27 25 4
gpt4 key购买 nike

我尝试运行 JUnit 测试,但它一直失败 - 即使代码应该通过测试。有什么想法吗?我已经把函数、转换因子和测试了

这是测试:

private static MathContext mc = new MathContext( 12, RoundingMode.HALF_EVEN );
public static final BigDecimal testValue = new BigDecimal( 123456.1234567 );

@Test
public final void testconvertFathomToMetersDM3() {
BigDecimal expectedResult = unitConverter.convertFathomToMetersDM3(testValue);
assertTrue( expectedResult.equals( new BigDecimal( 1.234561234567E+21, mc ) ) );
}

这是应该进行转换的方法:

private BigDecimal result;  
private static MathContext mc = new MathContext( 12, RoundingMode.HALF_EVEN );

public final BigDecimal convertMetersToFathomDM3(BigDecimal value) {
result = value.divide( ConversionFactors.FATHOM_DMA3, mc );
return result;
}

这是我使用的换算系数:

public static final BigDecimal FATHOM_DMA3 = new BigDecimal( 1.875E+1 );

最佳答案

在测试 float 的相等性时,经常会出现一些有关舍入错误的问题。为了解决此类问题,有一个带有三个双参数的 assertEquals 方法,其中最后一个是 delta。您可以尝试将断言语句更改为以下内容:

final double delta = 0.00001;
BigDecimal result = unitConverter.convertFathomToMetersDM3(testValue);
Assert.assertEquals(1.234561234567E+21, result.doubleValue(), delta);

您应该根据需要调整增量。 Delta 定义为预期值与实际值之间的最大差值,且两个数字仍被视为相等

关于java - 即使预期结果正确,JUnit 测试也会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20534953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com