1
我对此问题进行了Google搜索,但找不到答案。测试用例按顺序运行而不是平行运行
我的测试运行似乎并行运行并导致对方失败。单独运行时它们都会通过。我试图在测试中添加线程,并让他们入睡,但没有运气。
有没有办法按顺序依次运行这些测试?
我的环境:
Visual Studio 2010中 ReSharper的喷气脑筋6.1
我对此问题进行了Google搜索,但找不到答案。测试用例按顺序运行而不是平行运行
我的测试运行似乎并行运行并导致对方失败。单独运行时它们都会通过。我试图在测试中添加线程,并让他们入睡,但没有运气。
有没有办法按顺序依次运行这些测试?
我的环境:
Visual Studio 2010中 ReSharper的喷气脑筋6.1
我建议你有单元测试是确定性的。也就是说,它们不依赖于它们运行的顺序,或者其他测试在运行之前或之后运行。不这样做是失败的秘诀。大多数测试运动员都基于测试方法完全独立的事实。
这个事实在测试类的方法被调用的方式中是固有的。例如与MS测试你可以有大会,类和测试初始化方法。所有这些都是为每个被调用的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的本身被认为是测试。 “测试”课可以有效地进行许多测试。
听起来你有静态数据的地方,从一个测试持续到另一个可能是你的问题的根本原因。正如Peter Ritchie建议您应该重写代码/测试,以便这种静态依赖不会影响其他测试。 –
我在一些第一次测试中犯了这个错误。我会在Test1中的数据库中设置一个值,Test2会希望在那里。这是一场灾难。 –
可能的重复[有没有方法来防止\ * ReSharper并行运行程序集的单元测试?](http://stackoverflow.com/questions/10017156/is-there-a-way-to-prevent -resharper-从运行的-AN-组装件-单元测试-IN-p) – t0mm13b