假设我有一个这样的方法:
void MainWindow::on_tabWidget_tabBarClicked(int index)
{
if (index == 1)
{
Error("Empty, back to main");
ui->tabWidget->setCurrentIndex(0);
}
}
如何编写Object myRandomObject;
...
void foo(boolean input) {
if(input) {
myRandomObject.toString();
}
}
测试以仅测试jUnit
上实际上已调用toString()
方法?
答案 0 :(得分:2)
如果您的myRandomObject
只是使用覆盖了toString
的实现通过一些测试类定义来模拟自己,则设置一些标志然后在该标志上声明
private class TestRandomObject {
private boolean toStringCalled;
@Override
public String toString {
this.toStringCalled = true;
return "test";
}
}
或者甚至可以使用Mockito verify
方法,如
Object randomObjectMock = mock(Object.class);
// ...
verify(randomObjectMock , times(1)).toString();
编辑,不,你不能:)它会给你一个像有趣的消息一样的感受
Mockito无法验证toString()
toString()经常在幕后使用(即在IDE调试视图中的String串联期间)
他们说您可以stub
使用此方法,但是即使对它进行存根处理也不会允许您以后使用verify
。因此,似乎我的第一个建议是可行的