7

我最近观看了 JB Rainsberger的集成测试是一个骗局,现在正在寻找有关该主题的更多材料。我不得不说,我对我们做错了多少感到震惊(即当我们应该进行单元测试时进行集成测试),对 Rainsberger 描述的概念很感兴趣,但也对如何应用它们感到困惑。我想要更多描述的协作测试和合同测试,但我不知道从哪里开始。

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

A面:

Do I ask the right question?
Can I deal with the answer?

B面:

Can I answer a question?
Do I answer correctly?

但是如何将它应用于我的应用程序堆栈中的一些随机方法?

是否有书或教程或示例以现实世界为例并应用这些孤立微测试的想法?理想情况下,该示例使用 Java、C# 或 C++。

任何一般性地处理这些概念并帮助我更好地理解它们的文献将不胜感激。

此外,如果有论坛,我可以就如何正确进行单元测试甚至重构现有代码和发布示例提出更详细的问题。

谢谢!

4

2 回答 2

4

我会推荐Gerald Meszaros 的 xUnitTestPatterns - Refactoring Test Code,它提供了对您的问题的一些见解,以及在单个方法级别进行测试时各种实践的优劣的详细信息。

如果您读过 Fowler 的 Refactoring,您会发现问题的答案不一定非黑即白,而是基于您和其他人经验的启发式方法。

于 2012-02-15T16:48:07.847 回答
1

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

DbC 专注于将 A 方和 B 方之外的责任和利益正式化。就像接口的扩展。所以主要焦点变成了合约本身,中间的一层可以告诉双方是否可以相互交互。

Rainsberger 明确表示,到目前为止,还没有明确的库或语言支持并实现 A 模拟和 B 输入来询问相同的事情,暗示这可能是某人的博士工作。

然而,Jim Weirich 有一个很好的例子,其中合约是用于测试的 OO 模式,并且双方都同意使用它 https://www.youtube.com/watch?v=7Yw744FMqTY

于 2015-10-25T16:02:44.940 回答