在每个测试方法运行之前或之后自动执行方法/代码

Lan*_*ens 3 .net c# unit-testing c#-4.0 visual-studio-2012

我继承了一个包含数千个测试方法/类的测试项目,我需要实现一个需要在每次测试之后或之前运行的新清理过程.我知道这不是最好的,但这是我目前的情况.在一年之内,我们希望所有这些测试都能正确重建.我需要一些如何在每次测试之前或之后运行一个方法,而不是在每个测试类中对方法进行硬编码,因为我们没有时间进行此操作.我知道有一些用于程序集清理和init的属性,但只能在整个程序集之前和之后运行.我需要这样的东西,但是每次测试都会运行,而不需要为每个测试编写功能.

这可能吗?有哪些选择?

编辑 我正在使用MSTest

Cla*_*edi 6

假设您正在使用MSTest,则设置方法所需的属性为[TestInitialize].使用此属性修饰的方法将在每次测试之前运行.

  • 并使用[TestCleanup]进行清理. (3认同)
  • 仅当它在每个测试类中时才有效,因此这对我不起作用。我需要一个单一方法挂钩。 (2认同)
  • @Landin Martens:创建一个`BaseTest`类并从中继承所有测试.然后,您将在那里添加initialize方法,并将应用于所有每个继承.这是你能做的最好的事情. (2认同)