如何对无效且不带任何参数的测试方法进行单元化?

时间:2015-04-05 10:23:51

标签: java unit-testing junit return void

selectBoardSize(int x,int y)等方法。返回新的电路板尺寸。

此方法具有值,并且具有可以在项目中进行单元测试和比较的参数。

无效的方法怎么样?喜欢void playSound。此方法仅播放游戏的声音。不接受任何值,也不返回任何值。我们应该如何为这些方法编写单元测试?

2 个答案:

答案 0 :(得分:7)

根据其目的,void无参数方法必须结合以下内容:

  • 更改对象的状态 - 对象的一个​​或多个变量将在调用后更改其值
  • 产生一些副作用 - 该方法会执行一些输入或输出,或对环境进行其他一些更改
  • 不执行任何操作或抛出异常 - 该方法可能会执行某些验证,并保持安静或抛出异常

您应该构建单元测试,以验证是否发生了所需的更改。

答案 1 :(得分:0)

首先,为了涵盖一些术语,技术上对音频或图形输出的测试是集成测试,因为它涉及代码和某些硬件设备的组合。话虽如此,JUnit documentation讨论了处理void方法的一般方法。您可以测试副作用来调用void方法。您可以比较受调用方法影响的事物的状态,而不是将playSound()的输出与控制值进行比较。

InputStream is = new InputStream("yourMusic.mp3");
BufferedInputStream bis = new BufferedInputStream(is);
playSound(bis);               // play the sound using the input stream
assertEquals(-1, bis.read()); // make sure entire sound has been played