gpt4 book ai didi

java - JMockit 和按引用传递。我们中的一个一定是错的(而且可能是我!)

转载 作者:行者123 更新时间:2023-11-30 09:46:44 25 4
gpt4 key购买 nike

如果有人能帮助我解决我最近一直在努力解决的这个问题,我将不胜感激。我正在尝试模拟一个采用 double 和日历并返回由日历值确定的整数的方法。模拟定义如下:

new NonStrictExpectations()
{
// this is my class to be mocked
Calculator growthCalc;
{
GregorianCalendar month = new GregorianCalendar(2010, 0, 1);

for (int i = 0; i < 3; i++)
{
// mock the "applyInflation" method
growthCalc.applyInflation(anyDouble, month);
result = i;

month = (GregorianCalendar) month.clone(); //AAA
month.add(Calendar.MONTH, 1);
}

growthCalc.toString();
result = "Mocked Calculator";
}
};

模拟已设置(调用 toString() 返回正确的文本),但 applyInflation 方法对除上述循环的最后一次迭代以外的所有内容返回零(即当您传入新月份时返回 2公历(2010,2,1)。

我得出结论,标记为 AAA 的行没有达到我认为应有的效果。它似乎并没有改变指向“月”的新副本的指针,我可以在不影响模拟期望设置的“月”的内容的情况下修改它。要么,要么 JMockit 没有按照我想的方式记录模拟。

求助!请告诉我哪里出错了。我真的很想知道这里发生了什么,因为我对 Java 的理解根本上有缺陷,或者 JMockit 实现没有按照它“应该”的方式运行(据我说:))。或者我犯了一个真正的小学生错误,开始的两个晚上都没有发现......

谢谢。

最佳答案

您的测试完全正确。它只是因为 JMockit 中的错误而失败,我正在立即修复它。抱歉给您带来麻烦!

关于java - JMockit 和按引用传递。我们中的一个一定是错的(而且可能是我!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999579/

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