在Java中(在Android特定環境中,但這應該適用於所有板),爲了進行單元測試,刪除private
修改器(因此是否爲package
)被認爲是不好的做法?爲了測試而製作方法包還是私有方法是不好的做法?
說我有類似如下:
public void init(long id) {
mId = id;
loadItems(1);
}
public void refresh() {
loadItems(mId);
}
private void loadItems(int page) {
// ... do stuff
}
在這種情況下,我有絕對應該測試2種公共方法。值得關注的是,refresh()
和init()
方法幾乎相同,減去處理id的一些邏輯。
看起來這會是最簡單寫一個單元測試loadItems()
,然後就驗證這兩個init()
和refresh()
呼叫loadItems()
與適當的ID(使用類似的Mockito)。儘管如此,測試私有方法並不是一種「好方法」。
這樣做會讓我成爲一個糟糕的軟件開發人員嗎?我知道私人方法在技術上不應該需要單元測試,但這將是一個簡單的測試方法,IMO,尤其是如果loadItems()
有點複雜。
也許您現在的課程違反了[單一責任原則](http://en.wikipedia.org/wiki/Single_responsibility_principle)?例如,您可以製作一個專門的'ItemsLoader'類,您可以測試該類,並將該類的(模擬)實例注入當前類。儘管如此,我錯過了一些背景。 – nhaarman 2015-03-02 20:22:04
嗯...我想後續問題可能是「什麼時候創建一個新類過量殺毒軟件?」這顯然有點模糊。你和@kha基本上都是推薦同樣的東西。 – loeschg 2015-03-02 20:38:08
+1。也許(我不確定)如果你可以將它形成一個適當的問題,它可能適合[Programmers SE](programmers.stackexchange.com)。不要忘記首先嚐試搜索功能:) – nhaarman 2015-03-02 20:40:36