TeamCity SpecFlow NUnit Watin and ApartmentState STA



我试图让我们的specflow watin测试在我们新的teamcity服务器上运行。问题是我无法让内置的 nunit 运行器在公寓状态 STA 中运行测试。

我们之前使用了这个配置,它适用于其他测试运行程序:

<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 生成的,因此我无法控制如何设置这些属性。

如何使此设置正常工作?

找到了答案。

在AssemblyInfo中设置RequireSTA属性.cs会使配置过时。

[assembly:RequiresSTA]

SpecFlow 生成的 NUnit 测试是分部类定义,因此只需在另一个具有属性的文件中创建另一个分部类定义即可。

最新更新