我正在學習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