gpt4 book ai didi

c# - 为什么不自动调用 TestInitialize?

转载 作者:太空狗 更新时间:2023-10-29 23:07:26 25 4
gpt4 key购买 nike

正在使用 Microsoft.VisualStudio.TestTools.UnitTesting; 但是我标记为 [TestInitialize] 的方法在测试前没有被调用。我以前从未使用过这个特定的测试框架,但在所有其他框架中,总有一种注册 Setup 和 TearDown 方法的方法,这些方法将在每次测试前后自动运行。 visual studio 测试工具单元测试框架不是这样吗?

[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 处查看所有示例都有公共(public)访问器。

为了复现,制作这样的测试类:

[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");
}
}

该测试将产生以下结果:

enter image description here

InitializeCleanup 设置为私有(private),您只会看到 test body 被打印到控制台:

enter image description here

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

关于c# - 为什么不自动调用 TestInitialize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com