2011-06-10 193 views
1

當用MSTest執行測試時,我需要強制執行TestClass順序。MSTest:同一個TestClass中的測試執行順序

TestClasses每類中的測試可以是隨機的,但MSTest的不應該從另一個TestClass選擇一個測試,直到執行完畢ClassInitialize訂單,在類中的所有測試,ClassCleanup

我有全球AssemblyInitializeAssemblyCleanup,因此下面是不行的,因爲它初始化爲每個測試集:


MSTest.exe /testcontainer:MyUnitTests.dll /resultsfile:report.trx /test:TestClass1 /test:TestClass2 

回答

1

我問過類似的問題here,雖然它不是測試類的執行順序。如果訂購的原因是可以設置/維護某種狀態,那麼訂購測試可能導致它們變脆。如果您的測試出現這種情況,我會建議您改爲使用與訂單無關的方式編寫它們。

與彙編級代碼各地關於你的問題,工作的AssemblyInitializeAssemblyCleanup可以如下:

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 
     } 
} 

基本上,你可以強制裝配級別的方法來只啓動一次。

+0

感謝您的回覆。這不會有兩個不同的原因:1.每次程序集加載時它都會得到它自己的InitCount並且每次執行代碼時都要初始化它2. AssemblyCleanup應該在LAST測試執行後執行一次 – kateroh 2011-06-10 23:39:54