为什么我的VisualStudio单元测试中的每个测试都会触发TestInitialization?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

正在使用Visual Studio 2010 Beta 2.我有一个[TestClass],它有一个[TestInitialize],[TestCleanup]和一些[TestMethods]。 每次运行测试方法时,初始化和清理方法也都会运行! 我的印象是[TestInitialize]和[TestCleanup]只应该在本地测试运行中运行一次。 那是对的吗? 如果没有,那么做到这一点的正确方法是什么?

提问于
用户回答回答于

TestInitializeTestCleanup在每个测试之前和之后运行,这是为了确保没有测试是耦合的。

如果希望在所有测试之前和之后运行方法,请使用ClassInitializeClassCleanup属性。

来自VisualStudio中自动生成的测试文件的相关信息:

在编写测试时,可以使用以下附加属性:

// Use ClassInitialize to run code before running the first test in the class
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext) { }

// Use ClassCleanup to run code after all tests in a class have run
[ClassCleanup()]
public static void MyClassCleanup() { }

// Use TestInitialize to run code before running each test 
[TestInitialize()]
public void MyTestInitialize() { }

// Use TestCleanup to run code after each test has run
[TestCleanup()]
public void MyTestCleanup() { }
用户回答回答于

这是测试套件的标准行为:在每次测试前后设置和拆卸。其哲学是,考试不应相互依赖。如果想要另一种行为,可能应该使用在每个测试之间持久化的静态对象。

扫码关注云+社区