2012-04-15 43 views
3

我目前正在研究一个使用Struts2框架的项目。我们使用单独的组件访问数据库,这已经过很好的测试。与此同时,我们所从事的项目有很多“行动”,但未经过测试。在大多数操作中,我们至少使用一次DB服务调用。所以一方面这些操作非常简单。我不确定 - 单元测试是否应该写入?Struts2行动 - 测试与否?

我认为最好的做法是始终编写单元测试,但这些操作非常简单,而且现在我受到管理方的巨大压力。那么,它是否很重要 - 在没有单元测试的情况下离开Struts2的行为?

+1

它总是最好的做法,有单位的情况下,如果你有时间,我会强烈建议你去为他们,而且是S2的简单架构准备单位案件真的很简单,旁边你已经有很好的DB层的情况下。 – 2012-04-15 11:58:34

+1

取决于它们的简单程度。取决于是否有集成测试会使单独的操作单元测试变得冗余。取决于现在要做的最重要的事情。 – 2012-04-15 13:00:17

回答

6

以下是编写单元测试的三个主要原因。

  • 它可以帮助您知道您的代码现在可以工作。
  • 当功能在未来添加或更改时,它有助于防止回归错误的代码。
  • 如果您在编写代码之前编写单元测试,它会将您的设计过程集中在一个非常好的方式 - 阅读TDD以了解更多关于这样做的好处。

所以问问自己,这三个编写单元测试的原因是否适用于此。如果所有三个问题的答案都是“否”,那么考虑编写单元测试的代价,并将它们保存在代码库中。将此成本与可能的收益进行比较。对你是否应该编写单元测试做出明智的决定,并且准备好为你的经理辩护。

但是不要有一个先入为主的观点,即“对于每个班级,单元测试总是很好”。不要提出相反的概念 - “单元测试总是不必要的”。这两个都不是真的。

0

必须编写函数的单元测试可能会有问题,但无论如何,将来可能会验证的行动,这将是很好的可以测试。 测试操作的时间必须稍微多一点,我建议您这样做,应用程序中的每一层都必须有一些功能,如果不是不必要的并且必须查看该体系结构。

1

我和Dhanji Prasanna一样在Guice和Google Wave工作。它不是100%覆盖范围,而是关于编写有价值的测试,为正确的组件提供正确的反馈,以帮助开发和防止代码回归。

对于我的一个Struts2应用程序,我们有非常非常复杂的数据验证要求。数千人。我们使用struts2-junit-plugin在Spring 3 IoC和Struts2验证的集成上下文中测试动作类,并使用自定义机制为大量不同的数据场景填充模拟请求。这些测试在开发过程中和作为维护工具都是非常宝贵的。

但是对于我们一些较简单的操作,与花费时间写作相比,我没有看到太多价值。但是,如果它们非常简单,它们也不会花太长时间写出来。

我还看到过100%覆盖率概念导致100%的课程为他们写了毫无思想,毫无价值的测试的情况。对于我的钱,我投票选出了测试将提供最大价值的领域,并专注于做得非常好。