在使用MSTest执行测试时,我需要强制执行TestClass
命令。
TestClasses
的顺序和每个类中的测试可以是随机的,但是MSTest不应该从另一个TestClass
中选择一个测试,直到它完成执行ClassInitialize
,所有测试都在课堂上和ClassCleanup
。
我有全局AssemblyInitialize
和AssemblyCleanup
,因此以下内容不起作用,因为它初始化了每个测试的程序集:
MSTest.exe /testcontainer:MyUnitTests.dll /resultsfile:report.trx /test:TestClass1 /test:TestClass2
答案 0 :(得分:1)
我问了一个类似的问题here,虽然它与测试类执行顺序无关。如果排序的原因是可以设置/维护某种状态,则排序测试可能会导致它们变脆。如果您的测试属于这种情况,我建议您以与订单无关的方式编写它们。
关于汇编级代码的问题,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
}
}
基本上,您可以强制组装级方法仅触发一次。