1

我试图让我们的 specflow watin 测试在我们新的 teamcity 服务器上运行。问题是我无法让内置的 nunit 运行器在 appartmentstate 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 生成的,所以我无法控制这些属性的设置方式。

我怎样才能让这个设置工作?

4

2 回答 2

3

找到了答案。

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

[assembly:RequiresSTA]
于 2012-10-05T13:13:38.477 回答
3

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

于 2012-10-07T17:31:37.183 回答