【问题标题】:Test driven development - mock object测试驱动开发——模拟对象
【发布时间】:2013-10-30 09:14:50
【问题描述】:

我正在尝试使用 TDD 开发我的第一个项目。在这种情况下,我必须在我的应用程序代码之前编写测试用例。在我的测试用例中,我有一些模拟对象。我想知道模拟对象的期望是否也必须在代码创建之前编写。如果是真的,我怎样才能实现这个目标?我怎么能想象在我编写真正的代码之前必须调用的方法? (我将 Java 与 JUnit 和 Jmock 一起使用)

【问题讨论】:

    标签: unit-testing mocking tdd


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我想知道mock对象的期望是否一定要写 也在代码创建之前

        你可以创建一个什么都不做的方法,然后模拟结果。

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

        你怎么能在不知道它必须做什么的情况下编写代码?只需从空方法开始...

        【讨论】:

          猜你喜欢
          • 2011-03-11
          • 1970-01-01
          • 2011-09-09
          • 2012-10-10
          • 1970-01-01
          • 1970-01-01
          • 2010-11-21
          • 2013-08-24
          • 1970-01-01
          相关资源
          最近更新 更多