Unit testing 删除「;集成测试骗局“理解协作和契约测试

Unit testing 删除「;集成测试骗局“理解协作和契约测试,unit-testing,testing,integration-testing,collaboration,contract,Unit Testing,Testing,Integration Testing,Collaboration,Contract,我最近看了J.B.Rainsberger的节目,现在正在寻找更多关于这个主题的资料。我不得不说,我对我们做错了多少感到震惊(即,当我们应该进行单元测试时进行集成测试),对Rainsberger描述的概念很感兴趣,但对如何应用这些概念也感到困惑。我想进行更多的协作测试和合同测试,但我不知道从哪里开始 唯一让我印象深刻的是考试需要问的4个问题: A面: Do I ask the right question? Can I deal with the answer? Can I answer a q

我最近看了J.B.Rainsberger的节目,现在正在寻找更多关于这个主题的资料。我不得不说,我对我们做错了多少感到震惊(即,当我们应该进行单元测试时进行集成测试),对Rainsberger描述的概念很感兴趣,但对如何应用这些概念也感到困惑。我想进行更多的协作测试和合同测试,但我不知道从哪里开始

唯一让我印象深刻的是考试需要问的4个问题:

A面:

Do I ask the right question?
Can I deal with the answer?
Can I answer a question?
Do I answer correctly?
B面:

Do I ask the right question?
Can I deal with the answer?
Can I answer a question?
Do I answer correctly?
但我如何将其应用于我的应用程序堆栈中的一些随机方法呢

有没有一本书、一本教程或一个例子,能够以真实世界为例,应用这些孤立微观测试的思想? 理想的例子是使用java、C++或C++。 任何涉及这些概念并帮助我更好地理解它们的文献都将不胜感激

另外,如果有论坛,我可以问一些更详细的问题,比如如何正确进行单元测试,甚至重构现有代码和发布示例,那就更好了

谢谢

我建议您在单独的方法层面上进行测试时,可以深入了解您的问题,并详细介绍各种做法的优缺点


如果你读过Fowler的《重构》,你会发现问题的答案不一定是非黑即白,而是基于你和其他人的经验得出的启发。

Rainsberger过分夸大了集成测试的效率,以证明他在达到最终100%的代码质量(基本正确性)方面的观点

DbC专注于正式确定A和B双方之外的责任和利益。类似于接口的扩展。因此,主要焦点变成了契约本身,中间的一层,可以告诉双方,如果他们可以互相交流。p> Rainsberger清楚地表示,到目前为止,还没有明确的库或语言支持,并实现了A mock和B输入来询问相同的问题,暗示这可能是某个人的博士研究

然而,JimWeirich有一个很好的例子,其中契约是一种面向对象的模式,用于测试和同意使用它的双方

一下子就有很多问题了。你可能想缩小范围。也许(尽管其他人更能判断这一点)这可能更适合程序员SE?是的,你是对的。我把它限制在关于信息资源的问题上,并在程序员部分发布了详细信息。谢谢你的提示。我在程序员SE也有同样的产品,所以我对订购它有很好的感觉。Fowler是我最近经常听到的一个名字(目前正在阅读“由测试引导的不断增长的面向对象软件”)。也许我也得去买。