2012-08-30 49 views
0

我有rails 12应用程序的12000行代码的黄瓜功能。 我正在运行所有功能,以获取应用程序代码的代码覆盖范围,如控制器,模型,帮助器,查看页面代码。 要运行所有功能,需要4个小时。 我仍然没有获得100%的代码覆盖率,我的问题是如何通过黄瓜功能获得100%的代码覆盖率,以及如何将所有功能的运行时间从4小时缩短到最短可行时间。黄瓜功能需要时间来运行

回答

2

我敢肯定有很多关于普遍加快黄瓜的网页,例如http://aaron-jensen.com/post/5019042852/speed-up-your-rspec-cucumber-run就是其中之一。

你可能需要看谱,因为什么使您的黄瓜慢可能是特定于您的代码,只有你可以看到这一点。

记住,集成测试的确有正在缓慢的声誉,因为他们正在测试的全栈(这就是点)。这就是为什么人们经常进行彻底的单元测试而不是彻底的集成测试,因为在集成层面测试所有东西实在太慢了。

关于获得更好的覆盖,如果您使用的是覆盖报告,告诉你有多少被覆盖,它会告诉你其中线不包括它的HTML报告,您可以定制测试了点。

但是,它实际上可能有一些事情你不能在用户界面测试,因为他们在那里的鲁棒性 - 你不要指望在实践中发生的事。也就是说,但你的处理只是在他们的行为是出于意外的原因,或者是由于未来的代码更改。在这些情况下,单元测试可能是涵盖这些代码行的唯一方法。

+0

谢谢,马修很好的解释。 – Trupti

+0

我们不能使用黄瓜功能获得100%的代码覆盖率吗?实际上,我的客户希望rcov报告中出现的所有代码行都是绿色的,这是指代码被功能覆盖,目前我获得70%的代码,如红色,即功能不涵盖该代码。那么,告诉我这是测试代码覆盖的正确方法吗? – Trupti

+0

70%实际上是一个低代码覆盖率。你会发现得到的越多,获得剩余点的难度就越大,最后几个百分比往往是最难的。当我说可能会有线路不能在集成测试中覆盖时,这可能是一个例外情况,占一两个百分点。 –

0

当然,运行该功能需要时间,因为它实际上模拟了用户交互。 可避免重新指定要使用

cucumber path/to/file.feature:33 

这里33指定文件,您想运行特定情景的行数来运行确切的情况运行相同的场景。

+0

我不希望运行特定的功能,作为获取coverage.features文件夹中同时运行所有功能后生成的应用程序代码需要覆盖。 – Trupti