【问题标题】:Why is [TestClass]'s constructor called multiple times for each [TestMethod]?为什么每个 [TestMethod] 都会多次调用 [TestClass] 的构造函数?
【发布时间】:2019-01-24 19:38:04
【问题描述】:

如果您在一个测试类上有多个测试方法。类的构造函数将运行多次。我们如何解释这种过载?

【问题讨论】:

标签: c# unit-testing mstest


【解决方案1】:

根据我对 MSTest 的理解,每个[TestMethod] 都会实例化测试类。我猜您正在尝试在运行任何测试之前运行配置代码。如果是这种情况,我会推荐你​​:

A) 更新您的问题以解释您到底想要完成什么

B) 使用[ClassInitialize] 属性来标记一个方法在运行任何类的测试之前只运行一次

ClassInitialize 做什么

ClassInitialize 是使用 MSTest 在 C# 中编写单元测试时可用的众多属性之一。较常见的包括TestClassTestMethodTestInitialize。这表示该方法应在运行任何标有TestMethod 的方法之前运行一次。还有另一个与之密切相关的属性称为ClassCleanup,它会在所有测试方法运行后运行。

您可以在docs.microsoft.com阅读有关这些和更多属性的更多详细信息

【讨论】:

  • 我将提供我的单元测试的净化版本。您的意思是使用 [TestInitialize] 吗?
  • 我在回答中添加了更多细节
  • 此信息是否有助于您解决问题?如果是这样,请接受这个作为答案,否则让我知道还有什么导致混乱。
  • 我找不到原因。如果测试类的生命周期仅限于方法生命周期,那么构造函数对测试类有什么好处?
  • 我建议不要在您的测试类上使用构造函数。您想在构造函数中执行的任何操作都可以通过TestInitializeClassInitialize 方法完成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多