如何对void方法执行白盒测试?

时间:2014-03-31 22:52:29

标签: java swing unit-testing

我正在尝试对下面的方法执行白盒测试。它是一种使用计时器在Swing中闪烁JButton的数组列表(lightUpSequence)的方法。

我的问题如下:

因为这是一个void方法,如何检查预期的输出?我打算创建不同大小的数组列表作为输入。对于白盒测试,是否允许在被测试的方法中添加任何代码,如打印/计数器语句?我对在方法中添加任何修改并认为应该按原样测试方法感到犹豫。

非常感谢。

    private void blinkSequence() {

    final Timer timer = new Timer(BLINKING_TIMER_DELAY, null);
    timer.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            if (lightUpSequence.size() == 0) {
                timer.stop();
            }

            // Turn button ON
            if (!isON && lightUpSequence.size() > 0) {
                int elementIndex = lightUpSequence.get(0);
                buttonArrayList.get(elementIndex).setBackground(
                        Color.yellow);
                isON = true;
                // Turn button OFF if it's ON already. Then remove the
                // element.
            } else if (isON && lightUpSequence.size() > 0) {
                int elementIndex = lightUpSequence.get(0);
                buttonArrayList.get(elementIndex).setBackground(null);
                lightUpSequence.remove(0);
                isON = false;
            }
        }
    });

    timer.start();
    timer.setRepeats(true);

}

2 个答案:

答案 0 :(得分:1)

好吧,没有什么可以阻止你让它返回一个布尔值,但如果你想保持原样,你可以使用assert语句。

查看assert

答案 1 :(得分:0)

对于测试void方法,我使用以下startegy:

通过全局化方法粒度化方法的变量。

因此,如果您有一个数组,请在调用之前和之后检查大小。

如果大小相同,请检查数组中对象的状态,并在调用方法之前和之后进行比较,就像它们是否点亮一样。

通过这种方式,您可以有效地遵守白盒测试规则。