首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

assertEquals(Double,Double)和assertEquals(double,double,Delta值)之间的J单位差

assertEquals(Double, Double)assertEquals(double, double, Delta值) 是 JUnit 测试框架中用于比较两个浮点数是否相等的方法。由于浮点数的精度问题,直接比较两个浮点数是否完全相等通常是不准确的,因此 JUnit 提供了带 Delta 值的比较方法来处理这种情况。

基础概念

  1. assertEquals(Double, Double):
    • 这个方法用于比较两个 Double 对象是否相等。
    • 如果两个 Double 对象的值完全相同,则测试通过。
    • 由于浮点数的精度问题,这种方法在比较非常接近但不完全相等的值时可能会失败。
  • assertEquals(double, double, Delta值):
    • 这个方法用于比较两个 double 类型的值是否在指定的误差范围内相等。
    • Delta值 是一个正数,表示允许的最大误差范围。
    • 如果两个 double 值的差的绝对值小于或等于 Delta值,则测试通过。

优势

  • assertEquals(Double, Double):
    • 简单直观,适用于精确相等的比较。
    • 适用于不需要考虑浮点数精度问题的场景。
  • assertEquals(double, double, Delta值):
    • 更适合处理浮点数的精度问题。
    • 提供了灵活的误差范围设置,适用于需要容忍一定误差的场景。

类型

  • assertEquals(Double, Double):
    • 适用于 Double 对象的比较。
  • assertEquals(double, double, Delta值):
    • 适用于 double 基本数据类型的比较。

应用场景

  • assertEquals(Double, Double):
    • 当你需要确保两个 Double 对象的值完全相等时使用。
    • 例如,在某些精确计算的场景中,可能需要确保结果完全符合预期。
  • assertEquals(double, double, Delta值):
    • 当你需要比较两个浮点数是否在某个误差范围内相等时使用。
    • 例如,在科学计算、图形处理、物理模拟等需要处理浮点数精度问题的场景中。

示例代码

代码语言:txt
复制
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;

public class DoubleComparisonTest {

    @Test
    public void testDoubleEquality() {
        Double a = 1.0;
        Double b = 1.0;
        assertEquals(a, b); // 这里会通过,因为 a 和 b 的值完全相同
    }

    @Test
    public void testDoubleWithDelta() {
        double x = 0.1 + 0.2;
        double y = 0.3;
        double delta = 0.0001;
        assertEquals(x, y, delta); // 这里会通过,因为 x 和 y 的差值在 delta 范围内
    }
}

参考链接

通过使用 assertEquals(double, double, Delta值) 方法,你可以更好地处理浮点数的精度问题,确保测试结果的准确性和可靠性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JUnit学习

到目前来看,确实可能网上说一样,不过是多了几个main方法而已,不过,我相信随着学习深入,JUnit不仅仅是作为几个main方法来调用这么简单。...使用JUnit官方提供了几种方法,一是手动导入jar包,但在手动导入jar包时候一定要记得导入两个包: image.png 我们这里使用junit-4.12.jarhamcrest-core-1.3...@Test就是具体测试方法。 我们看到一个assertEqueals静态方法第一个参数表示期望,第二个参数表示实际,第三个参数表示误差值。..., double actual, double delta) { 14 assertEquals(null, expected, actual, delta); 15 } 对该方法参数解释前两个参数很好懂...因为double类型浮点数运算并不一定是“绝对准确”,所以新增一个误差值,这个误差值范围在期望实际之间。什么意思呢?

55650
  • Java中将特征向量转换为矩阵实现

    = 0; j < matrix.getColumnDimension(); j++) { System.out.print(matrix.getEntry(i, j) +...返回:创建并返回一个Array2DRowRealMatrix对象。SimpleMatrix(EJML)SimpleMatrix是EJML中用于表示操作矩阵类。...使用 assertEquals 断言方法验证转换后矩阵行数列数是否符合预期(2行3列)。使用 assertEquals 断言方法验证矩阵第一个元素(位于第一行第一列)是否为1.0。2....使用 assertEquals 断言方法验证转换后矩阵行数列数是否符合预期(2行3列)。...转换为矩阵:分别调用两个不同类方法将向量转换为矩阵。验证矩阵维度:使用 assertEquals 断言方法验证转换后矩阵行数列数。

    18421

    Alink漫谈(二十二) :源码分析之聚类评估

    (silhouette coefficient): 对于D中每个对象o,计算: a(o) : o与o所属簇内其他对象之间平均距离a(o) 。...b(o) : 是o到不包含o所有簇最小平均距离。 得到轮廓系数定义为: \[s(o)=\dfrac{b(o)-a(o)}{max\{a(o),b(o)\}} \] 轮廓系数在-11之间。...a(o)反映o所属紧凑性。该越小,簇越紧凑。 b(o)捕获o与其他簇分离程度。b(o)越大,o与其他簇越分离。...当轮廓系数为负时,这意味在期望情况下,o距离其他簇对象比距离与自己同在簇对象更近,许多情况下,这很糟糕,应当避免。...从而,CH越大代表着类自身越紧密,类与类之间越分散,即更优聚类结果。 CH轮廓系数适用于实际类别信息未知情况。

    88030

    敏捷测试价值观、方法实践读书笔记(5)

    初始化对象、执行操作和验证结果这3段之间有明显分隔,一般使用空行进行分割 每个测试用例代码行数均不多,每个测试用例只测试一个方法,测试目的是保证软件可测试性。...如果成功,则重构代码;如果失败,则更新或修复测试代码 除非有一个测试失败,否则不要写任何代码 定期重构,避免重复,保持代码设计一致性定义唯一性。...取出可用部分,清零 balance 。...(0.0,account.getBalance()); } 重构代码 问题 虽然能精确定义什么是非法取钱存钱,但非法定义并不清晰。...我们需要坚持“一个实现类就有一个测试类”法则,一个单元测试类至少应该对这个类公共接口进行测试。 不应该代码实现有太耦合,代码耦合太过紧密,就会令人“厌烦”。

    7510

    JUnit中用于Selenium测试中实践

    assertEquals为浮点声明 如果我们需要比较浮点类型(例如double或float),则在这种情况下,为了避免舍入错误,我们必须提供可以称为delta其他参数。...增量值可以评估为: Math.abs(预期–实际)=增量 如果由于四舍五入而导致期望实际之间存在边际差异,则可以认为这些边际差异相同,并且断言应标记为合格。...可以与floatdouble数据类型一起使用,请参考下面的语法 句法: 1public static void assertEquals(float expected,float actual,float...delta) 2public static void assertEquals(double expected,double actual,double delta) 3 声明用于浮点声明JUnit...仅就一个断言JUnit示例而言,为了使断言更具描述性可读性,我们可以使用匹配器流利API组合。

    2K20

    如何用StreamAPI处理BigDecimaladd

    如何用流求和 Stream API 提供数字流 numbers Stream,包括 IntStream、DoubleStream、LongStream我们通过创建一个数字流来来搞清楚它们是如何工作。...然后,我们用 [IntStream#sum] 计算它总数: IntStream intNumbers = IntStream.range(0, 3); assertEquals(3, intNumbers.sum...通过使用streams,我们可以使用 mapToDouble 将对象流转换为Double stream: List doubleNumbers = Arrays.asList(23.48...(); assertEquals(89.24, result, .1); 所以,如果我们能用同样方法总结出一组 BigDecimal 数字,那就很有用了。...(11, result); reduce方法有两个参数: Identity – 等于0–它是还原起始 Accumulator function – 接受两个参数,目前为止结果,以及流下一个元素

    1.1K10

    Junit单元测试教程_单元测试调试react源码

    而且在测试过程序,数据与数据之间是有关联是互相影响。这就会造成我们测试不准确从而影响后续编码进度项目准确性。 了解了上述测试缺点,我们也需要了解单元测试思想了。...(long expected, long actual) 检查long类型是否相等 assertEquals(double expected, double actual, double delta...所以面对这个问题,我们在单元测试时候,尽量不要去打印预期,需要注重观察是绿色红色比较好,它可以直观反映程序是否准确性达到预期。...对于双精度数,绝对有必要使用增量进行比较,以避免浮点舍入问题。如果您使用assertEquals带有double参数3参数版本。...assertEquals(double expected, double actual, double delta); 这样以来Double将被自动取消装箱,double并且一切正常,这样测试结果就不会失败

    72320

    vavr:让你像写Scala一样写Java

    函数声明只提供了 Function BiFunction 两种,流上所支持操作数量也较少。基于这些原因,你也许需要vavr 来帮助你更好得使用Java 8进行函数式开发。...使用Java 8代码: Arrays.asList(1, 2, 3).stream().reduce((i, j) -> i + j); IntStream.of(1, 2, 3).sum(); 使用...函数(Functions) Java 8提供了接受一个参数函数式接口Function接受两个参数函数式接口BiFunction,vavr则提供了最多可以接受8个参数函数式接口:Function0...(6, add1AndMultiplyBy2WithCompose.apply(2).intValue()); } } Lifting 你是不是常常写这种代码:调用一个函数,判断它返回是否符合需求...; assertEquals("two", output); } } 参考资料 《Java 8实战》 https://github.com/resilience4j/resilience4j

    1K30
    领券