可能重複: What’s the best way of unit testing private methods?我應該如何測試Java中的私有方法?
我是一個初學編程的,我不知道如何編寫一個應用程序,這將是單元測試結構良好。我想編寫應用程序,以便隨後添加有效的單元測試。
問題出在private
方法 - 他們不能在他們的課外進行測試。
我應該通過更改所有方法private
到protected
來解決此問題,並讓測試類擴展源類嗎?還是有更好的解決方案?
我的解決方案(私人splitLetters =>保護splitLetters)將這樣的工作:
源類:
class MyClass{
protected splitLetters(int num){
return num+2;
}
}
測試類:
class Test_MyClass extend MyClass{
public splitLettersTest(){
for(int i=0;i<100;i++){
System.println(parent.splitLetters(i));
}
}
}
解決方案:
未測試私有方法 - 有時私有方法正在執行非常複雜的任務,應該進行非常好的測試,並且我們不希望該用戶有權訪問此方法。很快,解決方案正在將私有方法改爲受保護。
嵌套類的方式來測試 - 問題,因爲QA使源代碼更改
反思 - 如果這使得它可以調用私有方法,它看起來像一個很好的解決方案http://www.artima.com/suiterunner/private3.html (我應該學會更多的理解反思,我不明白如果我們可以從另一個類別調用私有方法,思考如何不打破所有的公共和私人方法的想法。)
沒有定義私人方法(正如我在我的解決方案中所展示的) - 存在問題,因爲有時我們必須定義私有方法。
許多人會認爲私有方法不需要測試,只需要公開接口。 – David 2010-07-21 12:55:21
重複的http://stackoverflow.com/questions/34571/whats-the-best-way-of-unit-testing-private-methods – onof 2010-07-21 12:57:12
這個問題已經回答[這裏](http://stackoverflow.com/問題/ 34571 /單位什麼最最好的方式 - 的 - 測試 - 私有方法)。 – jevakallio 2010-07-21 12:55:56