2012-10-05 56 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