2011-01-10 32 views
1

我正在爲屬性爲setter但沒有getter的類編寫單元測試。如何在沒有配對getter的類上對setter進行單元測試?

我希望能夠測試這些設置器以確保它們正確設置數據。

我覺得我的選擇是:這些功能

  • 寫干將,這樣我可以測試是否正確設置
  • 寫這樣的方法testAllSetters()其測試他們一下子

但這兩種解決方案都是不受歡迎的,因爲它只是爲了測試它而向類中添加了不需要的功能。

  • 我還可以測試類的輸出看,這是一般正確的,但在許多情況下,這並不測試單獨制定者,因爲我想

什麼在沒有配對getter的類上單元測試setter的最好方法是什麼?

+0

我標記了這個_C#,accessors,getters-setters_,因爲它看起來像語言特定的。 – smci 2011-07-19 10:13:49

回答

2

問題後私有成員已被正確更新是你不想改變你的API進行單元測試。開始將你的單元測試視爲你的API的另一個用戶/消費者。就像使用該庫的開發人員一樣,單元測試也有自己的一套要求。當你將你的單元測試看作你的API的消費者時,會有一個使用這些getter的用戶,這將證明他們是正確的。

如果無法更改您的API(例如,如果您正在開發可重用框架),請將內部的單元測試API內部使用InternalsVisibleToAttribute以允許您的測試庫訪問代碼的內部方法。

拋開單元測試,你仍然可能想考慮在這些屬性上使用getter,因爲沒有getter的屬性對於開發者來說是非常不直觀的。該Framework Design Guidelines甚至有反對的規則:

切勿提供設置唯一屬性或 性能具有 比吸氣更廣泛的可訪問性的制定者。

您可能還想考慮這一點。

祝你好運。

0

設置者是否有任何邏輯?

是:打開吸氣劑。 Java:受保護並在同一個包中進行單元測試。 C#:InternalsVisibleToAttribute。

否:不要直接設置setter。沒有意義。測試使用由setters設置的數據的方法。

相關問題