可能重复: 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