我已经开始阅读Spring in Action书。Java代码测试中的澄清
我不知道JUnit,我认为我的疑问是关于。
有在这里笔者指的是,并说,这是很难测试的代码片段:
package com.springinaction.knights;
public classDamselRescuingKnight implements Knight {
private RescueDamselQuest quest;
public DamselRescuingKnight() {
quest = new RescueDamselQuest();
}
public voidembarkOnQuest() throwsQuestException {
quest.embark();
}
}
笔者说:
这将会是非常难写一个单元测试DamselRescuingKnight。在这样的测试中,你希望能够断言在调用骑士的embarkOnQuest()时调用了任务的embark()方法。但是在这里没有明确的方法来完成。不幸的是,DamselRescuingKnight将保持未经测试。
作者对此有何意义?
为什么代码很难在这里测试?
你能简要描述一下模拟对象是什么,为什么我们在这里需要它来测试代码是否正常工作。 – 2013-03-13 13:54:18
模拟对象是以受控方式模拟真实对象行为的模拟对象(http://en.wikipedia.org/wiki/Mock_object)。另外,我发现这篇文章对模拟vs存根对象非常有趣:http://martinfowler.com/articles/mocksArentStubs.html – 2013-03-13 17:57:10