使用 JUnit 测试图形生成

2023-12-21

我正在使用 Java 的 Graphics2D 生成图形的图形表示。我还使用 ImageIO 来编写 PNG 文件。 (ImageIO.write(image, "png", out);)

我想知道应该如何编写 JUnit 测试来测试生成的图形是否符合预期。我可以预先生成 PNG 文件,但如果不同机器上的字体有点不同怎么办?


对我来说,这个具体的实现似乎有效:

private void compareRasterImages(BufferedImage expectedPngIo, BufferedImage actualPngIo) throws AssertionError {
    int minX = expectedPngIo.getMinX();
    int minY = expectedPngIo.getMinY();
    int maxX = expectedPngIo.getMinX() + expectedPngIo.getWidth();
    int maxY = expectedPngIo.getMinY()+ expectedPngIo.getHeight();

    assertEquals(minX, actualPngIo.getMinX()); 
    assertEquals(minY, actualPngIo.getMinY()); 
    assertEquals(expectedPngIo.getHeight(), actualPngIo.getHeight()); 
    assertEquals(expectedPngIo.getWidth(), actualPngIo.getWidth()); 
    for (int x_i = minX; x_i < maxX; x_i++){
        for (int y_i = minY; y_i < maxY; y_i++) {
            assertEquals(expectedPngIo.getRGB(x_i, y_i), actualPngIo.getRGB(x_i, y_i));
        }
    }
}

我使用 ImageIO 从 PNG 中检索 BufferedImage(作为 byte[]):

BufferedImage expectedPngIo = ImageIO.read(new ByteArrayInputStream(expectedPng));
enter code here
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JUnit 测试图形生成 的相关文章

随机推荐