2015-04-16 18 views
0

我創建了我的單元測試和我的課程,並且儘可能快地完成了所有工作,並且我有一個綠色欄和許多測試。我應該爲在TDD重構階段創建的類編寫新的單元測試嗎?

現在我想重構,並使其良好。我想要做的重構的一部分是創建一個SUT依賴的新類,因爲我意識到我在同一個類中有不同的抽象級別。現在,現有的測試將完全覆蓋新課程,但我不確定是否將測試移動到測試新課程的新TestClass,將它們複製(儘管它們會略有不同),或者不打擾,因爲原始課程是外部API,新類是私有成員變量。

回答

0

不測試私有方法是一種可接受的(但有點爭議的)最佳實踐。

您希望您的測試套件能夠確保您的公共API的功能正確且符合文檔 - 而不是實際的實現。因此,只要你的重構沒有增加任何額外的功能,在公共方法等中改變參數,那麼你不需要在重構階段添加新的測試。

+0

我不是在談論創建私有方法。我知道不要測試私人方法。我正在談論創建一個全新的課程,這是第一個依賴的課程。 – uriDium

+0

我明白了,但如果新班級沒有任何公開的方法,那麼沒有。如果它具有的公共方法不是API的一部分,而是它的開發者。有時候測試A類的方法足以涵蓋B類。 – max

2

你正好碰上的單元測試的一大優勢:refactoring protection,這意味着如果你有覆蓋的類方法all functionalities and corner cases單元測試一個很好的套件,你可以放心地重構在任何你想要的方式類,只要你不修改該類別的public interface即可。

您打算添加的新helper類不需要單獨進行測試,因爲它將通過原始類進行間接測試。但是,如果您打算將helper類導出到其他類,那麼您可以考慮爲helper添加測試,以減少在其他類上調試失敗測試的開銷(因爲您知道helper正常)。

相關問題