我发现,当我写单元测试的时候,尤其是那些不返回值的方法,我大多是用白盒测试的方式来写测试。我可以使用反射来读取私有数据,以检查它在方法执行后是否处于正确的状态等......
这种方法有很多限制,其中最重要的是
- 如果您返工方法,您需要更改您的测试,即使 API 保持不变
- 从信息隐藏(封装)的角度来看这是错误的——测试是我们代码的一个很好的文档,所以阅读它的人可能会得到一些关于实现的不必要信息
但是,如果方法不返回值并使用私有数据进行操作,那么像使用黑盒测试范例一样进行测试是非常困难的(几乎不可能)。
那么,有什么想法可以很好地解决这个问题吗?