我正在学习TDD,并且对私有/受保护变量有疑问。我的问题是:如果我想测试的函数是对一个私有变量进行操作,我应该如何测试它?测试驱动开发:为私有/受保护变量编写测试
这里是我的工作的例子:
我有一个称为Table
类,它包含称为internalRepresentation
的实例变量是2D阵列。我想创建一个名为multiplyValuesByN
的函数,它将二维数组中的所有值乘以参数n
。
所以我写它的测试(在Python):
def test_multiplyValuesByN (self):
t = Table(3, 3) # 3x3 table, filled with 0's
t.set(0, 0, 4) # Set value at position (0,0) to 4
t.multiplyValuesByN(3)
assertEqual(t.internalRepresentation, [[12, 0, 0], [0, 0, 0], [0, 0, 0]])
现在,如果我做internalRepresentation
私人或受保护的,这个测试将无法正常工作。我该如何编写测试,因此它不依赖于internalRepresentation
,但在调用multiplyValuesByN
后仍然测试它看起来正确?
...也被称为Arrange-Act-Assert(但没有用于拆解的一致性匹配 - 猜测这是一件好事,它没有多少用处!) – 2010-06-16 14:31:35
是的,这就是为什么我把它放在括号内。这是有时需要的那些实际的东西之一,但不适合理论。我喜欢3-A的一致性。之前没有听说过,谢谢! – 2010-06-16 16:38:11