gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:55:27 25 4
gpt4 key购买 nike

我有一个方法

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

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

如何为 addTask() 编写单元测试用例,而不允许控件进入 mapToProperty() 方法。

如何模拟私有(private)方法mapToProperty()

最佳答案

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

private 方法表示“内部实现”详细信息。将它们从测试中排除......意味着您的测试需要了解这个私有(private)方法。但是您的测试不应该知道有关您的私有(private)实现细节的任何信息。他们不应该需要关心。

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

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

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

关于java - 使用mockito和powermockito在java中进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com