2013-10-30 118 views
2

我试图用TDD开发我的第一个项目。在这种情况下,我必须在我的应用程序代码之前编写测试用例。在我的测试案例中,我有一些模拟对象。我想知道模拟对象的期望是否也必须在代码创建之前编写。如果确实如此,我该如何实现这一目标?我怎样才能想象在写真代码之前必须调用的方法? (我使用的是JUnit和JMock的JAVA)测试驱动开发 - 模拟对象

回答

3

这正是TDD的工作原理。你根据你的规范编写测试:你想让被测试的类与它的依赖关系(模拟对象)做什么。在编写时,通过在您正在模拟的接口上添加方法来进行编译(默认实现不会返回任何内容)。然后你可以进行单元测试(使用模拟)。当所有测试都通过时,您可以继续为依赖项添加单元测试,这将依次推动您在上述步骤中编写的空方法的实现。

它将确保您对所有具体课程有100%的覆盖率。

0

我想知道,如果模拟对象的期望必须的代码创建

您可以创建一个具有一个方法之前写入 也什么也没有,然后嘲笑结果。

我怎么能想象在写真 代码之前必须调用的方法?

如何在不知道需要做什么的情况下编写代码?从空方法开始...

2

这就是为什么TDD是设计方法在第一位。通过测试你是设计你的应用程序。您正在创建漂亮的API,然后通过编写满足您的设计(即符合要求)的代码来实现此API。

从测试开始,它可以帮助您理解代码的需求,并以断言的形式记下这些需求(顺便提一下,有人可以实现这些需求)。从一开始你就不会创造出最好的设计。但是,您的设计将在重构过程中发展 - 您将重命名方法和类,您将提取一些代码。这将需要测试更改 - 您需要模拟提取的依赖关系。但是你的代码随时会满足需求,因为断言将保持不变。