使用mockito和powermockito在java中进行单元测试
我有办法使用mockito和powermockito在java中进行单元测试,java,junit,mockito,powermockito,Java,Junit,Mockito,Powermockito,我有办法 public TaskProperty addTask() { /*some operations * */ mapToProperty(); } private TaskProperty mapToProperty() { /**some op's**/ } 如何为addTask()编写单元测试用例,而不允许控件进入mapToProperty()方法 如何模拟私有方法mapToProperty() 你想这样做的事实。。。这不是个好
public TaskProperty addTask()
{
/*some operations
*
*/
mapToProperty();
}
private TaskProperty mapToProperty()
{
/**some op's**/
}
如何为addTask()
编写单元测试用例,而不允许控件进入mapToProperty()
方法
如何模拟私有方法mapToProperty()
你想这样做的事实。。。这不是个好主意:
private
方法表示“内部实现”细节。将他们排除在测试之外。。。意味着您的测试需要了解这个私有方法。但是您的测试不应该知道任何关于您的私有实现细节的信息。他们不需要关心
换句话说:单元测试应该只关注类的公共接口。因此:您试图以一种可以测试这些公共方法的方式编写所有代码,而无需“禁用”正在测试的类中的其他内容。意思是:要么重写你的私有方法,这样你就可以从任何单元测试中调用它;或者如果不可能,将相应的行为移动到另一个类中;然后向测试中的方法提供该类的mock实例
长话短说:您的问题意味着您想通过使用“模仿框架锤”来“按摩”症状来修复“糟糕的设计”。但这只是一种症状;潜在的问题仍然存在,并影响您的代码库。因此,花时间解决真正的问题;而不是围绕它工作
以防万一你还是喜欢嘲笑这个私有方法;我更倾向于建议研究mockito间谍来实现这一点(尽管PowerMock也允许进行此类测试,请参见)您希望这样做的事实。。。这不是个好主意:
private
方法表示“内部实现”细节。将他们排除在测试之外。。。意味着您的测试需要了解这个私有方法。但是您的测试不应该知道任何关于您的私有实现细节的信息。他们不需要关心
换句话说:单元测试应该只关注类的公共接口。因此:您试图以一种可以测试这些公共方法的方式编写所有代码,而无需“禁用”正在测试的类中的其他内容。意思是:要么重写你的私有方法,这样你就可以从任何单元测试中调用它;或者如果不可能,将相应的行为移动到另一个类中;然后向测试中的方法提供该类的mock实例
长话短说:您的问题意味着您想通过使用“模仿框架锤”来“按摩”症状来修复“糟糕的设计”。但这只是一种症状;潜在的问题仍然存在,并影响您的代码库。因此,花时间解决真正的问题;而不是围绕它工作
以防万一你还是喜欢嘲笑这个私有方法;我更愿意建议研究一个mockito间谍来做这件事(尽管PowerMock也允许这样的测试,请参见)它的可能副本是有意义的。如果您有一个私有方法,这意味着它必须执行一些必要的重要功能。所以,我应该允许控件通过私有方法流动,以确保私有方法也能正常工作,因为它的复制是有意义的。如果您有一个私有方法,这意味着它必须执行一些必要的重要功能。所以,我应该允许控件流经私有方法,以确保私有方法也能正常工作