【问题标题】:Writing Tests for Background Processes (like background jobs)为后台进程编写测试(如后台作业)
【发布时间】:2012-02-06 16:26:11
【问题描述】:

我有一个使用 Spring 构建的 Web 应用程序,其中包含一些作业。

一个典型的工作是运行数据库,获取修改后的客户列表,生成一个文件并通过 FTP 传输它。我的问题是,如何在这份工作中进行单元测试?

我是否应该只为工作的每个“步骤”编写单元测试,例如:

  • 测试获取修改后客户的方法。
  • 测试文件生成代码。
  • 测试 FTP 代码。

但在这种情况下,我会错过上述工作的“集成”测试用例。此外,Emma 报告作业形式中存在未经测试的代码。

任何想法表示赞赏。

谢谢!

【问题讨论】:

    标签: java spring unit-testing junit4


    【解决方案1】:

    单元测试实际上是一次只测试一个类。这意味着您必须模拟依赖项。春天非常适合。

    我会建议 Mockito 进行模拟。这是一个了不起的工具,您将学习 TDD,这也是编写漂亮代码的一种方式。

    集成测试是另一个主题,需要另一种策略。

    通过扩展 AbstractTransactionalJUnit4SpringContextTests 对数据库进行测试。你会在网上找到例子。通常,您还使用内存数据库来进行这些测试(h2 对此很有用)。可以在单元测试阶段完成。

    生成文件可以作为单元测试来完成。您生成文件并验证正确的内容。或者错误...

    对于 FTP 部分,我会说它更多是集成测试的一部分,除非您可以从构建脚本中生成 FTP 服务器。

    【讨论】:

      【解决方案2】:

      您必须为每个步骤编写一个单元测试。也许你需要模拟一些方法。

      然后,您可以编写一个集成测试来验证整体,但也许您需要存根某些部分(例如 FTP 服务器,在您的测试中使用嵌入式 FTP 服务器)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        • 2011-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多