我试图在集成测试期间确定两个图像之间的差异。在网上做了一些研究之后,我偶然发现了MarvinProject并尝试用它创建一个 UnitTest,见下文。
据我了解插件DifferentRegions
,它将ImageMask differenceMask
用包含差异的区域填充传递。我通过测试的两张图片确实不同,所以它应该打印出一些东西。
不幸的是,它没有。
我已经编写了其他测试来逐字节比较这两个图像并且这些测试成功了。对于那些想尝试这个问题的人,我在 GitHub 上创建了一个存储库,这里是ImageCompareTest。
@Test
public void tryMarvinProject() {
// init images
String root = "src/test/resources/";
MarvinImage assertedImg = MarvinImageIO.loadImage(root + "image1.bmp");
MarvinImage actualImg = MarvinImageIO.loadImage(root + "image2.bmp");
// init diff-regions plugin
DifferentRegions regions = new DifferentRegions();
regions.load();
regions.setAttribute("comparisonImage", assertedImg);
int width = assertedImg.getWidth();
int height = assertedImg.getHeight();
int type = assertedImg.getType();
// process the images and retrieve differences from the ImageMask
MarvinImageMask differenceMask = new MarvinImageMask();
regions.process(
actualImg,
new MarvinImage(new BufferedImage(width, height, type)),
new MarvinAttributes(),
differenceMask,
false);
// should contain the differences, but does not
System.out.println(differenceMask.getMaskArray());
assertNotNull(differenceMask.getMaskArray());
}