我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);
}
}
答案 0 :(得分:6)
公开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 用作测试运行程序。