如何为依赖注入伪造一个Image

时间:2015-04-03 02:30:41

标签: java dependency-injection tdd

对于班级,我的团队和我需要使用测试驱动开发创建项目。但是,我们遇到依赖注入问题。我们理解这个想法,通过“伪造”来自外部源的数据使代码单元可测试,但是一些数据类型给出了麻烦。例如,我们无法弄清楚如何“伪造”一个Image(java.awt.Image)。我们真正想要的只是一个“空”或“空白”的图像,但java总是希望我们将它指向一个文件。

在注射之前,测试看起来像这样:

@Test
public void testThatPieceInitializesWithValues() {
    Image img = null;
    try {
        //Don't have piece images yet...using board as placeholder
        img = ImageIO.read(new File("resources/board.jpg"));
    } catch (IOException e) { }
    Piece p = new Piece(PieceType.Camel, img);
    assertNotNull(p);
    assertEquals(PieceType.Camel, p.getType());
    assertEquals(img, p.getImage());
}

任何帮助都会非常感激,我在谷歌上找不到任何有价值的东西。

1 个答案:

答案 0 :(得分:4)

使用BufferedImage。它们扩展了Image,可以以任意大小和位深度创建。如果对您的测试很重要,您甚至可以draw on them

Image image = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB);