【问题标题】:MSTest invokes contructor everytimeMSTest 每次都调用构造函数
【发布时间】:2020-07-16 11:47:29
【问题描述】:

我进行了单元测试 (MStest) 有一个测试类有很多测试方法。 如果我从 TestExplorer 运行所有方法,每个方法都会调用构造函数。 有没有办法在所有这些方法中保存 TestClass 实例?

【问题讨论】:

  • 为什么你的测试类有构造函数?你在里面做什么?如果你想运行设置的东西,它应该在一个带有OneTimeSetup 属性的方法中完成,它将为每个夹具运行一次。或 Setup 将在每次测试之前运行
  • 抱歉,我认为这些是特定于 NUnit 的。但是MSTest有类似的概念automatetheplanet.com/mstest-cheat-sheetAssemblyInitialize(每个程序集一次),,ClassInitialize(每个测试类类一次),TestInitialize(每个类测试之前)

标签: c# visual-studio unit-testing mstest


【解决方案1】:

嗯,有多个不同的属性指示何时应该调用方法。如果您希望所有测试只运行一次设置,则应使用ClassInitialize -attribute,而不是构造函数:

[TestClass]
class MyTests
{
    [ClassInitialize]
    public static void SetupTests(TestContext context) { ... }
}

在构造函数中执行初始化只是一个坏主意,因为每个测试框架都有自己的计划来调用它们的时间和频率。相反,您应该使用在使用中具有确定性的属性。

如果您需要在每次测试之前进行初始化,您可以使用TestInitialize-attribute。

【讨论】:

  • 谢谢,这解决了我的问题。请更新你的答案,你需要添加一个参数TestContext。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 2020-03-05
  • 2013-08-02
相关资源
最近更新 更多