为后台进程编写测试(如后台作业)

时间:2012-02-06 16:26:12

标签: java spring unit-testing junit4

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

典型的工作是运行数据库,获取修改后的客户列表,生成文件并对其进行FTP。我的问题是,如何在这项工作中进行单元测试?

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

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

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

任何想法都赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

单元测试实际上一次只测试一个类。这意味着你必须模拟依赖项。春天很棒。

我会建议Mockito做嘲笑。这是一个了不起的工具,你将学习TDD,这也是一种编写漂亮代码的方法。

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

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

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

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