我试图让我们的specflow watin测试在我们新的teamcity服务器上运行。问题是我不能让内置的nunit runner在appartmentstate STA中运行测试。
我们之前使用过此配置,可与其他测试人员配合使用:
<NUnit>
<TestRunner>
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
但TeamCity NUnit测试运行器似乎没有接受这个配置。我们有其他的配置健全性测试,所以我们知道testrunner至少会读取测试项目的配置。
可以选择使用RequiresSTA属性,如下所示:
[Test, RequiresSTA]
public void ShouldRunThreadApartmentStateSTAWith()
{
Assert.AreEqual(ApartmentState.STA, Thread.CurrentThread.GetApartmentState());
}
但是由于NUnit测试是由SpecFlow生成的,所以我无法控制这些属性的设置方式。
如何让这种设置起作用?
答案 0 :(得分:3)
SpecFlow生成的NUnit测试是一个部分类定义,因此只需在另一个具有其属性的文件中创建另一个部分类定义。
答案 1 :(得分:2)
找到答案。
在AssemblyInfo.cs中设置RequireSTA属性会使配置过时。
[assembly:RequiresSTA]