在 java 中使用 mockito 和 powermockito 进行单元测试

Unit testing in java using mockito and powermockito

我有办法

public TaskProperty addTask()
{
     /*some operations
     *
     */
     mapToProperty();
 }

private TaskProperty mapToProperty()
{
    /**some op's**/
}

如何在不允许控件进入 mapToProperty() 方法的情况下为 addTask() 编写单元测试用例。

如何模拟私有方法mapToProperty()

想要这样做的事实...并不是一个好主意:

private 方法代表 "internal implementation" 细节。从测试中排除它们……意味着您的测试需要知道这个私有方法。但是您的测试不应该知道您的私有实现细节的任何信息。他们应该不需要关心。

换句话说:你的单元测试应该只关心你的 class(es) 的 public 接口。因此:您尝试以一种可以测试这些 public 方法的方式编写所有代码,而无需 "disable" 您正在测试的 class 中的其他方法。意思是:要么尝试重写你的私有方法,这样你就可以从任何单元测试中调用它;或者如果那不可能,将相应的行为移动到 another class;然后向您的测试方法提供 mocked 实例 class 。

长话短说:您的问题暗示您想通过使用 "mocking framework hammer" 到 "massage" 症状来修复 "bad design"。但这是一个症状;并且潜在的问题仍然存在,并影响您的代码库。所以花时间解决真正的问题;而不是解决它!

以防万一您仍然喜欢模拟该私有方法;我宁愿建议调查一个 mockito 间谍来做到这一点(尽管 PowerMock 也允许进行此类测试,请参阅 here