如何将单元测试拆分成组

edi*_*ode 3 .net c# unit-testing visual-studio-2008 visual-studio

我正在使用Visual Studio 2008,我希望能够将我的单元测试分成两组:

  1. 快速测试
  2. 更长的测试(即与数据库的交互)

我只能看到运行all或one的选项,并且还可以在单​​元测试类中运行所有测试.

有什么办法可以将它们分开或指定在我想运行快速测试时运行哪些测试?

谢谢

Ric*_*ebb 8

如果您正在使用NUnit,则可以使用CategoryAttribute.

MSTest中的等价物是TestCategory属性 - 请参阅此处以获取有关如何使用它的说明.


Ste*_*bbi 7

我会将您的单元测试组区分如下:

  1. 单元测试 - 使用存根的依赖项测试单个方法/类.应该非常快速地执行,因为只有内部依赖项.
  2. 集成测试 - 一起测试两个或多个组件,例如具有实际支持的数据库的数据访问类.这些通常是冗长的,因为您可能正在处理外部依赖项,如数据库或Web服务.但是,根据您正在集成的组件,这些仍然可以是快速测试.这里的关键是测试范围与单元测试不同.

我会创建单独的测试库,即MyProj.UniTests.dll和MyProj.IntegrationTests.dll.这样,您的单元测试库的依赖项将少于集成测试.然后,可以轻松指定要运行的测试组.

您可以设置一个持续集成服务器,如果您正在使用类似的东西,在不同时间运行测试,知道组1比第二组更快.例如,单元测试可以在代码签入您的存储库后运行immediatley,并且集成测试可以在一夜之间运行.使用Team City很容易设置这样的东西