Visual studio 2010 MSTest:同一TestClass中测试的执行顺序
在使用MSTest执行测试时,我需要强制执行Visual studio 2010 MSTest:同一TestClass中测试的执行顺序,visual-studio-2010,mstest,Visual Studio 2010,Mstest,在使用MSTest执行测试时,我需要强制执行TestClass顺序 TestClass和每个类中的测试的顺序可以是随机的,但是MSTest不应该从另一个TestClass中选择一个测试,直到它执行完ClassInitialize、类中的所有测试和ClassCleanup 我有全局AssemblyInitialize和AssemblyCleanup,因此以下操作不起作用,因为它为每个测试初始化程序集: MSTest.exe /testcontainer:MyUnitTests.dll /resu
TestClass
顺序
TestClass
和每个类中的测试的顺序可以是随机的,但是MSTest不应该从另一个TestClass
中选择一个测试,直到它执行完ClassInitialize
、类中的所有测试和ClassCleanup
我有全局AssemblyInitialize
和AssemblyCleanup
,因此以下操作不起作用,因为它为每个测试初始化程序集:
MSTest.exe /testcontainer:MyUnitTests.dll /resultsfile:report.trx /test:TestClass1 /test:TestClass2
我问了一个类似的问题,尽管这不是关于测试类的执行顺序。如果排序的原因是为了能够设置/维护某种状态,则排序测试可能会导致它们变得脆弱。如果您的测试是这样的,我建议您用一种顺序不可知的方式来编写它们 关于程序集级代码的问题,
AssemblyInitialize
和AssemblyCleanup
的解决方法如下:
private int InitCount;
[AssemblyInitialize]
public static void Setup(TestContext context)
{
if (InitCount++ == 0) {
//Do Something
}
}
[AssemblyCleanup]
public static void Teardown()
{
if (--InitCount == 0) {
//Do something
}
}
基本上,您只能强制程序集级方法启动一次。我问了一个类似的问题,尽管这不是关于测试类的执行顺序。如果排序的原因是为了能够设置/维护某种状态,则排序测试可能会导致它们变得脆弱。如果您的测试是这样的,我建议您用一种顺序不可知的方式来编写它们 关于程序集级代码的问题,
AssemblyInitialize
和AssemblyCleanup
的解决方法如下:
private int InitCount;
[AssemblyInitialize]
public static void Setup(TestContext context)
{
if (InitCount++ == 0) {
//Do Something
}
}
[AssemblyCleanup]
public static void Teardown()
{
if (--InitCount == 0) {
//Do something
}
}
基本上,您只能强制程序集级方法触发一次。谢谢您的回复。这将不起作用,原因有二:1。每次加载程序集时,它将获得自己的InitCount,并在每次/执行代码2时对其进行初始化。AssemblyCleanup应在执行最后一个测试后执行一次感谢您的回复。这将不起作用,原因有二:1。每次加载程序集时,它将获得自己的InitCount,并在每次/执行代码2时对其进行初始化。AssemblyCleanup应在执行最后一个测试后执行一次