|
|
1
1
实际上,如前所述,在没有数据库交互的情况下模拟和使用存根来测试系统交互是很好的,但集成测试可能只是一种有效的方法。 您提到的关于编写数据库表和数据的脚本,然后在所有集成测试之前运行安装脚本,是一种相当明智的方法。 不知道你有多喜欢ORM,但使用NHibernate,你可以从映射重建表。重建数据库后,我通常只需要一个脚本来物理创建对象并通过NHibernate持久化它们。我知道这不是最好的方法,但我通常会发现我需要的启动测试数据量并没有那么大,而且通过NHibernate插入也是一个测试本身:-)。 我从来没有用过 Fitnesse 正如“迈克·斯科特”所提到的,但我听到了一些好消息,而且看起来确实很有趣。它也被推荐在臭名昭著的 Billy McCafferty 本文简要介绍了一些伟大的通用开发最佳实践,如单元测试、ddd、契约式设计等。。 |
|
|
2
0
建议的方法是构建您的系统,使您可以在没有DB的情况下测试代码。这对代码视角意味着使用关注点分离。您希望将所有核心业务逻辑与页面分离。你可以使用MVC或MPV模式来实现这一点,如果你做得好,你可以找到很多关于它的东西。 现在有ASP。Net MVC;MVC模式已被应用于ASP中。Net早在这个框架存在之前就已经存在了,所以如果你想增强现有的web表单应用程序,一定要确保你最终不会看到最近关于ASP的热门话题。Net MVC作为ASP.Net中的编程模型。网。 现在,假设您已经将处理按钮点击的核心逻辑与页面隔离开来,所以您有一个类,我们称之为WidgetController。小部件控制器可能有一个HandleClick()方法来执行您的业务逻辑。 让我们进一步假设您的业务逻辑需要数据访问。你可以再次使用关注点分离。你的业务逻辑不应该关心如何访问数据库,它所需要的只是让另一个类获取数据。一种流行的数据分离方法是使用离散注入或控制反转模型(分别为DI、IoC)。本质上,你所做的就是为你的数据访问定义一个接口,你的控制器将根据该接口进行编程。然后,您在运行时通过某种方法(属性、构造函数等)向控制器提供实际的类 这样做的作用是,它允许您在运行时提供MOCK实现,从而分离您的数据库。模拟将实现您的接口,您只需新建测试所需的对象即可将其存储在内存中。 |
|
|
3
0
在单元测试中,隔离数据访问代码并对其进行抽象(通常使用接口,例如 repository pattern )这样在单元测试中就不会有任何数据库代码。相反,使用模拟框架(例如。 Moq ).这样,你的测试就会运行 快速的 ,这是确保您经常运行所有测试所需要的。 当你需要测试整个系统,包括数据库时,你正在做 集成测试 为此,请看 Fitnesse 有一个 good book on it . |
|
|
Tim Kirkwood · 比较空数据帧 1 年前 |
|
|
nerrood · 为什么在笑话测试中不调用save 2 年前 |
|
|
eof · Chrome块文件下载-selenium 2 年前 |
|
Display name · Ember.js辛烷值验收试验 2 年前 |
|
|
Vitto · 理智和回归测试是如何在一个简单的场景中协同工作的? 2 年前 |
|
|
mattsmith5 · 使用特征文件并行计算空手道跑场景 2 年前 |
|
|
Norronas · 采用裸机编程的寄存器单元测试 2 年前 |