有一个单元测试,指定某个函数返回一个值需要多长时间,这是不错的做法。我正在测试一个卷曲函数,并且想要指定它需要在5秒后超时。这是否符合单元测试的工作方式?单元测试是否有执行时间标准?
回答
测试你的函数加curl加服务器比单元测试更集成测试。话虽如此,如果你只有一个这样的测试,那你肯定是可行的。我写了,并且仍然有不是纯粹的单元测试的测试,但他们完成了他们的工作。我会尽可能保持他们的方向。
我唯一感到困扰的是5秒超时,这对单元测试来说非常长。现在,这取决于它发生的频率。您是否考虑过基本测试(例如ping服务器),然后启动curl以避免启动不必要的测试。
如果您正在寻找替代品,那么将测试分为两部分:1 /测试如何调用curl; 2 /测试你的函数对结果做什么?这样你就可以与服务器隔离,你不需要任何超时。
我不认为,这是对方法合同的测试。这就是为什么我会说不,这不是一个单元测试。但它听起来像某种系统测试。
另一个不合格的例子是单元测试,事实上它需要很长时间(5秒)才能执行。通常情况下,您应该能够在每次进行更改时执行完整的单元测试套件。你不能等很久。
这就是为什么我认为你的测试应该在另一组测试中,而不是单元测试。它应该在您的日常构建/持续集成中执行,但不应在每个程序员签入之前执行。
我认为这可能是一个主观标签,因为你问的每个人都会有自己的单一测试的真实定义。
在我看来,时机不在大多数个案的单元测试范围之外,但是对于验证超时的正确行为的特定情况,只要执行时间合理即可。
这取决于。如果函数指定在5秒后超时,则这是单元测试的内容。我认为在像这样的单元测试中衡量性能不是一个好主意,因为它增加了太多的单元测试失败的其他原因。如果您开始在构建服务器上以并列方式运行单元测试,则不希望额外的负载例如通过测试失败。
民粹回答:是一个长期运行的单元测试是一个代码的气味,应立即更换
务实的答案:如果你有一个长期运行的测试问题,你要确保你的测试套件迅速失败的话,添加超时。
我想你应该嘲笑函数用来检测它花了足够长时间等待的方法,然后你可以立即测试超时而不是等待实时。
也许是更多的性能测试,但是。 nunit有他们:http://weblogs.asp.net/egarmon/archive/2005/02/14/372114.aspx。 junitperf有他们:http://clarkware.com/software/JUnitPerf.html
如果答案是否定的?这是否意味着你不会写测试?
如果是特殊情况,我会写测试,现在担心它。
如果我盯着有很多涉及时间的测试,我可能会将它们从正常的单元测试中分离出来,以便我可以独立或一起运行这些集。
- 1. 单元测试自动执行的属性是否有价值
- 2. 是否有可能加快单元测试的时间?
- 3. 在执行单元测试期间检查是否连接了调试器
- 4. 执行测试和单元测试
- 5. 在Jenkins中是否有测试脚本/可执行文件的标准方法?
- 6. 是否包含运行单元测试?
- 7. 是否有像铬时间轴的PHP基准测试工具
- 8. mstest - 单元测试运行时间
- 9. 单元测试.NET标准1.6库
- 10. 单元测试标准::地图
- 11. 单元测试嘲讽标准
- 12. 时间戳测试单元测试
- 13. 单元测试(是或否)
- 14. 是否可以执行单元测试的多线程?
- 15. TFS2010 - 团队捕获单元测试的执行时间建立
- 16. Moq是否取代标准VS'Assert'测试?
- 17. Angular2 - KarmaJS - 单元测试没有自动执行npm测试
- 18. 准确测量执行时间(秒)
- 19. 是否可以在单元测试中抽出时间?
- 20. CUDA基准测试中的执行时间问题
- 21. 单元测试 - 是否有单元测试调用其他单元测试的不良形式
- 22. 在Visual Studio中执行单个Boost测试单元测试
- 23. 在java中是否有命令来测量执行时间?
- 24. 执行C#单元测试詹金斯
- 25. 单元测试可执行项目
- 26. Vert.x单元测试不执行
- 27. VS2010执行单元测试(bug)
- 28. 是否有可能在MVC4中对BundleConfig进行单元测试?
- 29. 是否可以运行所有单元测试?
- 30. 是否有编程运行Visual Studio单元测试的API?