使用MSTest单独运行单元测试和集成测试

Tom*_*son 16 integration-testing unit-testing mstest visual-studio-2010

我们使用Visual Studio 2010 Ultimate和MSTest编写的测试.我们的单元测试和集成测试*都是用MSTest编写的.

**根据我们的定义,集成测试是一个MSTest TestMethod,需要一段时间才能运行和/或调用外部组件,如数据库或Web服务.*

我正在寻找一种轻松过滤集成测试的方法,以便只运行单元测试而不运行所有集成测试.

我的想法到目前为止:

  1. 使用[Ignore]属性标记集成测试.这可以工作但是当你想要运行集成测试时真的很痛苦.

  2. [TestCategory]为不同的测试类型分配属性.这允许它们单独运行,但只能通过"测试视图"面板运行.您不能使用CTRL + R,A(在解决方案中运行所有测试)或其他类似的快捷方式/热键.

  3. 集成测试是在一个单独的项目中,是否可以采取措施阻止它们在项目级别运行?只要它很容易切换.

  4. 将集成测试写在不同的测试框架中,例如NUnit.这将使它们与工具的观点完全分开.

有没有人有任何其他建议?是否有任何插件可以帮助解决这个问题?

Pet*_*hie 6

我建议为集成测试使用不同的项目(或多个项目),因为根据您的跑步者,在所有跑步者中运行或不运行测试的唯一真正方法是包括或不包括测试类库.

但是,如果您使用的是MSTest,我还建议您使用TestCategoryAttribute来标记非单元测试.然后,您可以"过滤"测试以使用MSTest在测试视图中运行.

像Resharper和显然TestDriven.net(http://bit.ly/tmtYC2)这样的跑步者允许你从一般的单元测试执行过滤掉那些测试.


Mat*_*att 5

如果您的单元测试项目位于单独的命名空间中,则可以使用键盘快捷键CTRL+R, T在当前上下文中运行所有测试(即namespace MyApp.Tests.Unit).为此,将光标放在任何单元测试类的namespace子句中的左大括号之后.