2016-12-02 37 views
0

當我有象下面的方法,決定單元測試代碼覆蓋率爲更高水平的方法

double Process(double payable) 
{ 
    var step1Result = Step1(payable); 
    var step2Result = Step2(step1Result); 
    return Step3(step2Result); 
} 

是具有用於處理()當我已經有用於內三個單位測試單元測試它需要公共方法? 如果答案不是必需的,那麼這是否意味着Process()方法必須通過手動代碼檢查來維護?

+0

您的問題已經在這裏得到解答:http://softwareengineering.stackexchange.com/questions/188609/best-way-to-unit-test-methods-that-c​​all-other-methods-inside-same-class –

+1

這裏沒有單一的「正確」答案。如果這些方法在另一個類中,你可能會在這裏嘲笑它們,在這種情況下,你只能測試嘲笑框架本身。即使在同一個類中,如果您已經測試過這些函數並覆蓋了該代碼,那麼您只需再次測試相同的功能即可。無論哪種方式,我的意見是不打擾。 –

+1

這是我的看法。這是我的**意見這一事實也是爲什麼我共同投票決定以「主要基於意見爲基礎」來解決問題的原因。無論如何,我的意見是這樣的。你關心這個方法嗎?沒有?那麼不要麻煩測試它。是?那麼顯然你應該測試它。爲什麼?因爲你不僅僅在測試**當前的**實現,所以你也可以安全地防範未來的變化**。不要陷入思考的陷阱「當前的代碼有效,爲什麼我需要測試工作代碼?」。 –

回答

1

如果Process是公開的,那麼是的,你需要爲Process進行單元測試。如果有人正在修復一個錯誤並忘記調用Step2,Process將不再起作用。如果您已經編寫了代碼,則必須進行測試。

如果它不是公開的,那麼只要通過其他方法調用它,例如另一種公共方法來覆蓋它,那麼你應該沒問題。基本上,如果正在使用Process方法,並且您放置了一個斷點並運行所有測試,並且它不會觸及斷點,那麼這意味着它不會被覆蓋和測試。當然,您可以使用visual studio的測試覆蓋率來指示是否覆蓋而不是使用斷點。

相關問題