[英]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);
}
}
公開Initialize
和Cleanup
。 您還可以檢查,在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");
}
}
該測試將產生以下結果:
將Initialize
和Cleanup
設為私有,您將看到只有test body
被打印到控制台:
使用Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集作為單元測試框架版本10.1.0.0和ReSharper 8.2作為測試運行程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.