【问题标题】:Are there non-static equivalents to MSTest's [ClassCleanup] & [ClassInitialize]?MSTest 的 [ClassCleanup] 和 [ClassInitialize] 是否有非静态等效项?
【发布时间】:2012-01-19 19:51:49
【问题描述】:

是否有 MSTest 的 [ClassCleanup] 和 [ClassInitialize] 的非静态等效项?

我正在使用 MSTest 进行一些系统/集成级别的测试,我不想担心在测试中清理和初始化连接。

示例代码:

[TestClass]
public class DefectCreatorTest
{
    private long _cookie;
    private soapcgi _soap;

    [ClassInitialize]
    public void Initialize()
    {
        _soap = new soapcgi {Url = "http://localhost:80/scripts/soapcgi.exe"};
        _cookie = Transaction.Login(_soap);
    }

    [ClassCleanup]
    public void TearDown()
    {
        Transaction.Logout(_cookie, _soap);
    }

    [TestMethod]
    public void CreateDefectTest()
    {
        var result = _soap.Foo();
        Assert.AreEqual("bar", result);
    }
}

【问题讨论】:

  • 非静态是什么意思?你的示例代码有什么问题?
  • 示例代码编译,但不会运行。用 ClassInitialize 修饰的方法需要是静态方法。
  • 测试不会运行,因为 Initialize 方法需要将 TestContext 传递给 setup 方法,即使它没有被使用。

标签: unit-testing integration-testing mstest system-testing


【解决方案1】:

据我所知,回答您的问题 - 不,MSTest 中没有非静态等效项

但是:

  1. 查看您的代码,没有理由不将_cookie_soap 以及InitializeTearDown 设为静态。这样做会让你在编写测试时忘记配置的烦恼……
  2. 如果您愿意“跳槽”,可以将 [ClassCleanup][ClassInitialize] 的 NUnit 等效项应用于静态和实例方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 2010-11-03
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多