gpt4 book ai didi

c# - 测试用例按顺序而不是并行运行

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:43 24 4
gpt4 key购买 nike

我用谷歌搜索了这个问题,但找不到答案。

我的测试运行似乎并行运行并导致彼此失败。它们在单独运行时都通过了。我试图在测试中添加线程并让它们进入休眠状态,但没有运气。

有没有办法一个接一个地依次运行这些测试?

我的环境:

Visual Studio 2010
Resharper Jet 大脑 6.1

最佳答案

我建议您进行确定性的单元测试。也就是说,它们不依赖于它们运行的​​顺序或其他测试在之前或之后运行的顺序。不这样做是失败的秘诀。大多数测试运行程序基于测试方法完全独立的事实。

这个事实在调用测试类的方法的方式中是很明显的。例如使用 MS Test,您可以拥有 Assembly、Class 和 Test 初始化方法。所有这些都是为每个被调用的 TestMethod 调用的。例如,使用以下类:

   [TestClass()]
public class DivideClassTest
{
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
Console.WriteLine("Assembly Init");
}

[ClassInitialize()]
public static void ClassInit(TestContext context)
{
Console.WriteLine("ClassInit");
}

[TestInitialize()]
public void Initialize()
{
Console.WriteLine("TestMethodInit");
}

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

[ClassCleanup()]
public static void ClassCleanup()
{
Console.WriteLine("ClassCleanup");
}

[AssemblyCleanup()]
public static void AssemblyCleanup()
{
Console.WriteLine("AssemblyCleanup");
}

[TestMethod()]
public void Test1()
{
Console.WriteLine("Test1");
}
[TestMethod()]
public void Test2()
{
Console.WriteLine("Test2");
}
}

你会看到像这样的输出
Assembly Init
ClassInit
TestMethodInit
Test1
TestMethodCleanup
TestMethodInit
Test2
TestMethodCleanup
ClassCleanup
AssemblyCleanup

虽然有一个“测试”类,但 TestMethod 本身被认为是测试。 “测试”类可以有效地进行许多测试。

关于c# - 测试用例按顺序而不是并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995068/

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