gpt4 book ai didi

java - 使用 Mockito 验证无参数和私有(private)方法

转载 作者:行者123 更新时间:2023-12-01 18:39:57 24 4
gpt4 key购买 nike

我是 JUnit 和 Mockito 的新手,下面的类定义了一个需要测试的方法execute,我想知道是否可以模拟这种类型的类?请阐明一些观点并分享您的想法。

public class MyRule implements SuperRule{    
private OrderList orderList;
private ScheduleList scheduleList;

public MyRule (OrderList orderList, ScheduleList scheduleList) {
this.orderList = orderList;
this.scheduleList = scheduleList;
}

@Override
public void execute() {
createWeeklyClassificationRule(orderList);
handle(scheduleList);

}
private void createWeeklyClassificationRule(OrderList orderList) {
//......
}
private void handle(ScheduleList scheduleList) {
//......
}
}

最佳答案

您可以模拟 scheduleListorderList 并使用 verify 来确保从它们调用正确的方法。

public class MyRuleTest
{
private MyRule myRule;
private ScheduleList scheduleListMock;
private OrderList orderListMock;

@Before
public void setUp() throws Exception
{
scheduleListMock = mock(ScheduleList.class);
orderListMock = mock(OrderList.class);

myRule = new MyRule(orderListMock, scheduleListMock);
}

@Test
public void testExecute()
{
myRule.execute();
verify(scheduleListMock).foo();
verify(orderListMock).bar();
}

...

您只需将 foo 和 bar 替换为您希望调用的任何方法即可。

如果您正在测试 MyRule,您不应该 mock 它。一个好的经验法则是不要模拟正在测试的类。

关于java - 使用 Mockito 验证无参数和私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59953984/

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