2

我和一个同事正在辩论。我们正在进行一个糟糕的遗留项目,并且正在慢慢添加验收测试。他认为我们应该在 gui/watin 中完成这项工作,然后使用低级库直接查询数据库以获得他所说的“端到端”测试。

我们正在使用 NHibernate,我主张使用 gui/watin 然后使用那些 nhibernate 对象在验收测试中进行断言。他不喜欢 NHibernate 在测试中的依赖性。我的断言是我们已经/应该对 NHibernate 对象进行集成测试,以确保它们以我们想要的方式与 DB 一起工作,此时在验收测试中使用它们来断言正确操作没有任何缺点。我还认为他的低级 sql 依赖会使测试在很多情况下变得脆弱并重复业务逻辑。

我们商店的集成测试基本上意味着它具有依赖关系的单个组件,例如 fileRepository/FileSystem Domain-NhibernateObject/Database。验收测试意味着通过 GUI 进入。单元意味着所有依赖项都具有/可以被模拟/存根,并且您在内存中进行了纯测试,只有被测方法实际执行任何实际工作。让我知道我的 defs 是否关闭。

无论如何,任何关于这个主题的文章/文档/羊皮纸你可以指出我将不胜感激。

4

1 回答 1

2

你曾经自动化测试的唯一原因是让事情更容易改变。如果您不更改它们,则可以摆脱手动测试。将测试绑定到数据库将使数据库更难更改。

恐怕将它们绑定到 NHibernate 对象也无济于事!

您系统的用户不会使用数据库或 NHibernate。他们如何获得利益(或向其他利益相关者提供利益)?他们如何才能知道它运行良好?如果您可以在验收测试中捕捉到这一点,您将能够更改底层代码和数据,同时仍然保持应用程序的价值。如果有人从数据中生成报告,为什么不生成相同的报告并检查其内容是否符合您的预期?如果数据被另一个系统读取,您能否获得该系统的副本并查看它向用户输出内容?

无论如何,这是我的观点——让验收测试尽可能接近商业价值——这是我写的一篇博文,可能会有所帮助。你也可以试试 Yahoo 上的Behavior Driven Development 小组,他们当中有相当多的经验。

哦,进行集成测试以检查您的 (N)Hibernate 绑定是否良好是一个好主意。为我们节省了几个项目。

于 2010-10-07T20:41:27.223 回答