2011-11-30 53 views
2

我很郁闷的MS测试。我想创建一个集成测试,以便我可以检查我的存储库是否按预期执行所有CRUD操作。 Therfor我创建了3种测试方法MS测试有序测试 - 我怎样才能让它以清晰和简单的方式运行?

  1. 我在哪里添加数据,然后再次读取 - >测试suceeds如果插入的项目可以被检索
  2. 我在哪里更新插入项,然后又看了一遍 - >测试suceeds如果检索项目具有相同的密钥但已更改数据
  3. 我在哪里删除插入的项目并尝试再次阅读 - >如果无法检索项目,则测试结束。

我想这样做的主要原因是为了减少我需要的测试设置的数量。

第一个想法是添加一个测试方法,它可以做所有事情,但如果测试失败,比第三部分我无法看到,其他人已经成功。

这就是为什么我尝试了有序测试,应该可以说明框架调用方法的顺序。只要我使用我平常避免的测试视图,这就行得通。我通常使用control + R + T,但是这也会以随机顺序执行每个方法,而不是在定义的方法中执行。最后但并非最不重要的一点是,如果我想在构建机器上执行有序测试,似乎必须做额外的工作。

我不明白为什么这些方法是以随机顺序调用的。我无法理解为什么我需要一个外部文件,并且无法轻松定义代码中的顺序。

所以我真正的问题是: 我做错了什么?为什么微软将这种奇怪的功能添加到它的工具中?为什么不说:[TestMethod(“CRUD”,1)]并使用属性的参数来定义组和顺序。

在我看来,微软(再次)MS测试中的一个很难的方式,可以做很容易的事情。

感谢您的帮助。

回答

1

就“为什么”而言,我认为这样做是为了防止测试套件的用户将时态依赖性引入到他们的测试中。这是一个单元测试框架,他们的意思是。

为了解释我的意思,设想你有一个测试首先执行,并且该测试具有在特定目录中创建一堆文件的副作用。然后你有第二个测试使用这些文件。现在,订购不仅仅是一种便利 - 这是必要的。第二项测试对其本身毫无意义。我相信这些线索编写者会争辩说,这些应该是单个测试,或者(最好)不要使用单元测试套件来做这样的测试。

至于你做错了什么,我不知道你做错了什么。我认为你只是试图以一种作者没有打算的方式来使用这个工具。就个人而言,如果我正在为CRUD操作编写集成测试套件,我根本不会使用MS Test或单元测试框架。我要么使用专门设计来做这种事情的工具,要么通过执行CRUD操作并报告结果来编写一个运行数据访问DLL的小应用程序。

您自己的家庭滚动实用程序可以包含在您的解决方案中作为启动项目快速运行,由您的构建等调用。如果你想多花一点时间,你甚至可以让它生成一个小报告或使其输出符合与MS Test(那些测试XML文件)相同的输出。

+0

谢谢你的回答。我从来没有将MS Test看作单元测试框架,即使这个词在用户界面中也经常使用。我的意思是,我们有可能附加数据库,检查应用程序用户界面的行为,并在需要创建参数化测试时使用文件。这听起来更像是集成和系统测试,而不是像微小和易于执行的单元测试那样在理论上进行描述。不要误会我的意思,但现在我明白了Roy Osherove在写道时所说的话:“MS测试就像IE6” –

+0

嗯,我个人仅将它用于单元测试,但我确实看到了你的观点。看起来很奇怪,他们有这样的理念,然后允许你做需求文件和测试运行的东西。我来自xUnit背景,所以MS Test有一些问题。对于你正在做的事情(有序测试,可能值得一看,如果NUnit或MBUnit会支持你的测试排序 - 你可能更喜欢使用它们......把它们想象成Firefox和Chrome到MSTests的IE6 :)) –

相关问题