【问题标题】:Unit testing in java using mockito and powermockito使用 mockito 和 powermockito 在 java 中进行单元测试
【发布时间】:2017-08-22 02:49:25
【问题描述】:

我有办法

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

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

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

如何模拟私有方法mapToProperty()

【问题讨论】:

标签: java junit mockito powermockito


【解决方案1】:

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

private 方法代表“内部实现”细节。从测试中排除它们...意味着您的测试需要了解此私有方法。但是你的测试不应该知道你的私有实现细节。他们应该不需要关心。

换句话说:你的单元测试应该只关心你的类的public接口。因此:您尝试以一种可以测试这些公共方法的方式编写所有代码,而无需“禁用”您正在测试的类中的其他东西。含义:要么尝试重写您的私有方法,以便您可以从任何单元测试中调用它;或者如果这不可能,则将相应的行为移到 another 类中;然后为您的测试方法提供该类的模拟实例。

长话短说:您的问题暗示您想通过使用“模拟框架锤”来“按摩”症状来修复“糟糕的设计”。但这是一种症状;并且潜在的问题仍然存在,并且会影响您的代码库。所以花时间解决真正的问题;而不是解决它!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2017-09-19
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多