Dan*_*son 5 c# unit-testing visual-studio-2013
我只是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);
}
}
Run Code Online (Sandbox Code Playgroud)
制作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");
}
}
Run Code Online (Sandbox Code Playgroud)
该测试将产生以下结果:

制作Initialize和Cleanup私人,你会看到只有test body打印到控制台:

使用Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集作为单元测试框架版本10.1.0.0和ReSharper 8.2作为测试运行程序.