我正在尝试使用TDD开发我的第一个项目。在这种情况下,我必须在我的应用程序的代码之前编写测试用例。在我的测试用例中,我有一些模拟对象。我想知道在创建代码之前是否必须编写模拟对象的期望。如果是真的,我该如何实现这一目标?在编写真正的代码之前,我怎么能想象必须调用的方法? (我正在使用JUnit和Jmock的Java)
答案 0 :(得分:3)
这正是TDD的工作原理。您根据您的规范编写测试:您希望被测试的类对其依赖项(模拟对象)做什么。在编写时,您可以通过在您正在模拟的接口上添加方法来进行编译(默认实现不返回任何内容)。然后你可以进行单元测试(使用模拟)传递。当所有测试都通过时,您可以继续为依赖项添加单元测试,这将依次驱动您在上面步骤中编写的空方法的实现。
它将确保您对所有具体课程的覆盖率达到100%。
答案 1 :(得分:2)
这就是为什么TDD首先是设计方法。通过测试,您可以设计您的应用程序。您正在创建漂亮的API,然后您通过编写满足您的设计的代码(即满足要求)来实现此API。
当你从测试开始时,它可以帮助你理解代码的要求,并以断言的形式写下这些要求(顺便说一下其他人可以实现这些要求)。从一开始你就不会创造出最好的设计。但是你的设计会在重构过程中发展 - 你将重命名方法和类,你将提取一些代码。这将需要更改测试 - 您将需要模拟提取的依赖项。但是你的代码会随时满足要求,因为断言会保持不变。
答案 2 :(得分:0)
我想知道是否必须写出模拟对象的期望 也在代码创建之前
您可以创建一个不执行任何操作的方法,然后模拟结果。
在编写true之前,我怎么能想象必须调用的方法 码?
如何在不知道必须执行的操作的情况下编写代码?从空方法开始......