单元测试和集成测试有什么区别?
这些测试有不同的名称吗?像一些人称单元测试功能测试等?
我知道所谓的单元测试和集成测试的教科书定义.我很好奇的是,什么时候编写单元测试...我会编写它们以涵盖尽可能多的类.
例如,如果我有一个Word类,我会为Word该类编写一些单元测试.然后,我开始写我的Sentence班,当它需要与互动Word类,我会经常写我的单元测试,从而测试它们都Sentence和Word......至少在他们互动的地方.
有这些测试基本上已经成为集成测试,因为他们现在测试这些2班的整合,还是仅仅是一个单元测试,跨越2班?
在一般情况下,因为这种不确定的线,我很少会实际编写集成测试......或者是使用我的成品,看看是否所有的碎片正常工作实际集成测试,即使他们是手动的,很少重复超出范围每个功能?
我是否误解了集成测试,或者集成和单元测试之间是否真的差别很小?
感谢所有人的响应!我认为从各种各样的答案中可以清楚地看出,单元测试和集成测试之间的界限肯定是模糊不清的,也许尝试找出哪些是真正的焦点应该保留在代码上有点迂腐(谢谢@Rob Cooper ).此外,抱歉,但我不会接受任何答案,因为太多太好了,而且看起来非常主观.
我有一个Maven构建,我使用SureFire插件来运行一些单元测试,而FailSafe插件则运行一些集成测试.我想要一种方法来运行FailSafe插件的测试.
对于我来说,在pom中添加不同的配置文件或任何东西并不是一个好的解决方案,因为它是一个多模块构建,我不想编辑每个模块的pom.
有skip.tests和maven.test.skip和skipTests它停止所有的测试,以及skipITs,其仅停止故障安全插件.
那么,Maven是否有一个命令行标志skipITs,而是具有"onlyITs"的功能?
integration-testing build maven maven-surefire-plugin maven-failsafe-plugin
什么时候我应该使用Rails应用程序的规格和黄瓜(前rspec故事)?当然,我知道如何工作和积极使用规范.但使用黄瓜仍然感觉很奇怪.我目前对此的看法是,当您为客户端实现应用程序并且不了解整个系统应该如何工作时,使用Cucumber很方便.
但是,如果我正在做自己的项目呢?在大多数情况下,我知道系统的各个部分是如何相互作用的.我需要做的就是写一堆单元测试.那时我需要黄瓜的可能情况是什么?
并且,作为相应的第二个问题:如果我写黄瓜故事,我是否必须编写规范?难道不是同一件事的双重测试吗?
integration-testing unit-testing rspec cucumber rspec-stories
我继承了Junit测试的负载,但是这些测试(除了大多数不工作之外)是实际单元测试和集成测试(需要外部系统,db等)的混合.
所以我试图想出一种方法来实际将它们分开,这样我就可以很好地快速运行单元测试,然后进行集成测试.
选项是......
将它们拆分为单独的目录.
移至Junit4(从v3开始)并注释类以将它们分开.
使用文件命名约定来告诉类是什么,即AdapterATest和AdapterAIntergrationTest.
3存在Eclipse可以选择"在所选项目/包或文件夹中运行所有测试"的问题.因此,只需运行集成测试就很难了.
2:冒着开发人员可能开始在单元测试类中编写集成测试的风险,它只会变得混乱.
1:似乎是最好的解决方案,但我的直觉说必须有一个更好的解决方案.
所以这就是我的问题,你如何分解集成测试和适当的单元测试?
我的问题是这一个的变种.
由于我的Java Web应用程序项目需要大量读取过滤器/查询以及与GridFS等工具的接口,因此我很难想到以上述解决方案建议的方式使用MongoDB的合理方法.
因此,我正在考虑在我的集成测试中运行MongoDB的嵌入式实例.我希望它能自动启动(对于每个测试或整个套件),为每个测试刷新数据库,最后关闭.这些测试可能在开发机器和CI服务器上运行,因此我的解决方案也需要是可移植的.
任何对MongoDB有更多了解的人都能帮助我了解这种方法的可行性,并且/或者建议任何可能帮助我入门的阅读材料吗?
我也对人们对如何处理这个问题的其他建议持开放态度......
我相信大多数人都在编写大量的自动化测试,而且在进行单元测试时你也遇到了一些常见的陷阱.
我的问题是你是否遵循任何编写测试的行为规则以避免将来出现问题?更具体一点:良好单元测试的属性是什么,或者您如何编写测试?
鼓励语言不可知的建议.
language-agnostic tdd integration-testing unit-testing testing-strategies
我正在使用带有Cucumber和Capybara的Ruby on Rails.
我将如何测试一个简单的确认命令("你确定吗?")?
另外,我在哪里可以找到有关此问题的进一步文档?
我想在我的Gradle构建(版本1.0)中添加集成测试.它们应该与我的正常测试分开运行,因为它们需要将webapp部署到localhost(它们测试该webapp).测试应该能够使用我的主要源集中定义的类.我该如何实现这一目标?
unit-testing ×6
build ×2
java ×2
junit ×2
capybara ×1
cucumber ×1
gradle ×1
javascript ×1
junit4 ×1
maven ×1
mongodb ×1
rspec ×1
source-sets ×1
tdd ×1
testing ×1