簡體   English   中英

如何在沒有成對的getter的類上對setter進行單元測試?

[英]How to unit test setters on classes that do not have paired getters?

我正在為具有具有setter但沒有getter的屬性的類編寫單元測試。

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

我發現我的選擇是:

  • 為這些功能編寫吸氣劑 ,以便我可以測試它們的設置是否正確
  • 編寫諸如testAllSetters()類的方法來一次測試它們

但是,這兩種解決方案都是不受歡迎的,因為僅出於測試目的,它就向類添加了不必要的功能。

  • 我還可以測試該類的輸出,以查看它總體上是正確的,但是在許多情況下,這並不能像我希望的那樣測試各個設置器

在沒有成對的吸氣劑的類上對單元測試設置器進行單元化的最佳方法是什么?

這里的問題是您不想更改單元測試的API。 開始以您的API的另一個用戶/使用者的身份查看單元測試。 就像使用該庫的開發人員一樣,單元測試也有自己的一套要求。 當您將單元測試視為API的使用者時,將有一個使用這些getter的用戶,它將證明它們合理。

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

撇開單元測試,您可能仍要考慮在這些屬性上使用吸氣劑,因為對於開發人員來說,不使用吸氣劑的屬性是很不直觀的。 框架設計准則甚至對此有一條規定:

請勿提供僅設置的屬性,或者提供的設置程序比獲取程序具有更廣泛的可訪問性的屬性。

您可能還需要考慮到這一點。

祝好運。

您可以在調用設置器后使用PrivateObject來檢查私有成員是否已正確更新

設置員有邏輯嗎?

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

否:請勿直接設置二傳手。 沒有意義。 測試使用設置者數據集的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM