2012-10-05 55 views
1

我試圖讓我們的specflow watin測試運行在我們的新teamcity服務器上。問題是,我不能讓內置的nunit runner在appartmentstate STA中運行測試。TeamCity SpecFlow NUnit Watin和ApartmentState STA

我們使用這種配置早些時候,這與其他testrunners工作:

<NUnit> 
    <TestRunner> 
     <add key="ApartmentState" value="STA" /> 
    </TestRunner> 
</NUnit> 

但TeamCity的NUnit的測試運行似乎沒有拿起這個配置。我們還有其他的配置健全性測試,所以我們知道測試人員至少讀取我們測試項目的配置。

有使用RequiresSTA屬性,像這樣的選擇:

[Test, RequiresSTA] 
public void ShouldRunThreadApartmentStateSTAWith() 
{ 
    Assert.AreEqual(ApartmentState.STA, Thread.CurrentThread.GetApartmentState()); 
} 

但由於NUnit的測試由SpecFlow產生的,我並沒有對這些屬性是如何設置的控制。

我怎樣才能使這個設置工作?

回答

2

找到了答案。

在AssemblyInfo.cs中設置RequireSTA屬性使配置過時。

[assembly:RequiresSTA] 
3

通過SpecFlow產生的NUnit的測試是一個局部類的定義,所以簡單地創建在其上具有所述屬性的另一個文件另一個局部類定義。

+0

謝謝。爲我解決問題。我正在使用NUnit,Specflow和NCrunch,並且有STA線程問題。我嘗試通過[assembly:RequiresSTA]/[assembly:Apartment(ApartmentState.STA)]添加屬性,但這不起作用。然而,添加[Apartment(ApartmentState.STA)]確實有效。 – pandrew