簡體   English   中英

為什么不自動調用TestInitialize?

[英]why isn't TestInitialize getting called automatically?

我正在using Microsoft.VisualStudio.TestTools.UnitTesting; 但我在測試之前沒有調用標記為[TestInitialize]的方法。 我之前從未使用過這個特定的測試框架,但是在其他所有框架中總是有一種注冊Setup和TearDown方法的方法,該方法將在每次測試之前和之后自動運行。 視覺工作室測試工具單元測試框架不是這種情況嗎?

[TestClass]
public class RepoTest
{
    private const string TestConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=RepoTest; Trusted_Connection=True;";
    private const string MasterConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=master; Trusted_Connection=True;";

    [TestInitialize]
    private void Initialize()
    {
        using(var connection = new SqlConnection(MasterConnectionString))
        using(var command = new SqlCommand(Resources.Initialize, connection))
        {
            command.ExecuteNonQuery();
        }
    }

    [TestCleanup]
    private void Cleanup()
    {
        using (var connection = new SqlConnection(MasterConnectionString))
        using (var command = new SqlCommand(Resources.Cleanup, connection))
        {
            command.ExecuteNonQuery();
        }
    }

    [TestMethod]
    public void CreateARepo()
    {
        var repo = new Repo(TestConnectionString);
    }
}

公開InitializeCleanup 您還可以檢查,在msdn,所有示例都有公共訪問器。

為了重現,做出這樣的測試類:

[TestClass]
public class Tests
{
    [TestInitialize]
    public void Initialize()
    {
        Console.WriteLine("initialize");
    }

    [TestCleanup]
    public void Cleanup()
    {
        Console.WriteLine("cleanup");
    }

    [TestMethod]
    public void Test()
    {
        Console.WriteLine("test body");
    }
}

該測試將產生以下結果:

在此輸入圖像描述

InitializeCleanup設為私有,您將看到只有test body被打印到控制台:

在此輸入圖像描述

使用Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集作為單元測試框架版本10.1.0.0和ReSharper 8.2作為測試運行程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM