2010-10-26 159 views
1

由於這是強烈推薦的,我讀書,我已經開始寫測試,每個我創建的類的書籍之一。我不確定什麼是一個好的做法來覆蓋制定者和獲得者。如果是的話,我不知道該如何驗證setter方法,因此需要調用此變量的getter,反之亦然。所以你永遠不會知道實際問題在哪裏。 我去過的地方就是對制定者和獲得者的類似測試。的JUnit getter和setter

回答

1

如果您關心的是覆蓋範圍指標,那麼設置者和獲取者可能會讓您失望。無論是

,你一定要對其進行測試,特別是如果他們做的比設置或獲取更多。

此外,它可以測試設置/獲得一個測試。如果道具是私人的,那麼你必須這樣做,除非有一套的副作用。或者你可以在測試其他方法時隱式測試它們。例如,如果您正在測試DAO,那麼當您編寫testSave方法時,可以使用setter和getter ...

爲了使生活更輕鬆,您可能可以編寫基於反射的測試實用程序來測試setter和干將。或者只寫簡單的測試,它並不難或費時的,雖然它是無聊...

有很多的選擇在這裏...

+1

測試只是爲了實現高覆蓋率的指標就像是獲得每行代碼的支付.. imho ... – 2010-10-26 18:51:05

+0

@alexander我沒說你應該測試指標。我說setter/getters可以殺死指標。我在上面澄清。 – hvgotcodes 2010-10-26 18:52:18

1

如果你的getter和setter方法只是獲取和設置支持變量,然後編寫單元測試對他們來說並沒有提供多少價值,你基本上測試的語言和編譯器在做什麼,他們應該。

重點在於測試該行爲是否按預期工作。如果你設置了屬性A,那麼就意味着屬性B現在應該有不同的值,這可能值得進行單元測試。

0

寫單元測試一般原則是,如果你的測試類包含邏輯。
即使你有一個委託邏輯(業務層調用dao層),我會建議爲它編寫測試。

至於值對象(PO​​JO的或該事項),你能避免單元測試。

但是,如果你想測試那些對象 - 使用反射。
您可以使用反射設置字段並查看getter返回的內容。您可以使用setter來設置字段,然後再次使用反射來檢查該值。

1

測試驅動開發的哲學說「測試所有可能會破壞的東西」。

getter和setter方法是微不足道的代碼,併爲你您IDE經常產生。希望IDE的開發人員已經測試過該代碼,因此您不必這樣做。唯一的情況是我會打擾測試getter的是,如果他們做的不僅僅是set/get。

爲您的業務邏輯編寫測試,而不是爲了編寫測試而進行測試。

+3

...如果他們「不僅僅是設置/獲得」,他們並不是真正的最嚴格意義上的制定者/獲取者。使用只有raw訪問器具有這些名稱的代碼才更容易;你可以看看這個名字,並知道,「這只不過是設置/獲得」。 – 2010-10-26 18:46:53

+0

好點卡爾 – willcodejavaforfood 2010-10-26 18:48:11

2

如果您練習TDD(測試驅動設計),則只有在您需要時纔會出現設置者和獲取者 - 您不僅僅是自動創建它們以防萬一。在這種情況下,訪問者的需求通常會在已經失敗的測試過程中出現,這種測試方法不太簡單。這意味着您的訪問者將被測試,而不是通過特定的測試,但是在測試更廣泛的方法的過程中。這更好;創建訪問者「以防萬一」是愚蠢的,而對於像那樣微不足道的方法編寫測試是愚蠢的。但是讓他們測試覆蓋是很好的。