如何在需要运行appserver的遗留代码上有效地使用ApprovalTests?

时间:2013-01-09 19:27:43

标签: java-ee testing integration-testing approval-tests

ApprovalTests看起来很适合遗留代码,但问题是我的遗留代码是在appserver中运行的,重新部署应用程序需要> 2分钟。因此,我担心运行批准测试的反馈循环会让我不想经常运行它。我可能最终会在没有经常测试的情况下更改更多代码,并且可能会进入“更改 - >测试 - >失败 - >恢复”的重复模式。

任何人都可以向我提供有关如何将ApprovalTests用于需要很长时间部署的遗留代码的建议吗?这正是我应该期待处理的,还是我以错误的方式编写这个测试?

2 个答案:

答案 0 :(得分:1)

您要在项目中测试什么?

如果要使用Approval Tests测试表单,您应该找到一种方法将依赖项与应用程序分开,并允许测试仅针对代码运行。最好的方法是开始将较小的代码块重新分解为单元可测试的块,然后将显示与数据源和依赖关系分开的路径将显示出来。

此视频适用于旧版重构: http://www.youtube.com/watch?v=aWiwDdx_rdo (注意整个事情是值得的)

此视频显示了将数据加载与项目分开的好方法: http://www.youtube.com/watch?v=5gIeJ6z82Pk

答案 1 :(得分:0)

我从该产品的创建者那里得到了答案:

  

所以你担心的是“改变 - >测试 - >失败 - >恢复”   而且这种情况会发生,但是通过更小更细致的更改,您应该能够取得良好的进展,而失败不应该是规则,而是例外。   此外,请记住,在传统中,座右铭是更好,而不是好。使用此测试,直到您重构足以获得不需要appserver的测试。然后你移动得更快。   批准测试本身并不需要大或慢,这只是验证。它是大或慢的测试,虽然批准测试对此很有用,但它绝不是建议或建议那些是你想要的测试。

然后我问:

  

您是说,“审批测试让您以这种方式进行测试,但这不是使用审批测试的好方法”吗?如果我正确地解释了这一点,那会是更好的方法吗?

他回答说:

  

是肯定的。 approtests让你测试这种方式。   这不是单元测试的好方法。   它很可能是您目前进行单元测试的最佳方式。   使用它直到你重构一个更好的单元测试方法(一个不需要服务器的方法)

希望这可以帮助其他人解决同样的问题。