我有一些 NUnit 测试用例需要在 STA 模式下运行。
正如许多网站或博客(例如这里)所讨论的那样,我向我的 NUnit 测试程序集中添加了一个配置文件("app.config"),其内容如下。
如果我在NUnit控制台或NUnit GUI中运行我的单元测试而不使用NUnit项目文件,那么这个方法就可以正常工作。
然而,一旦我通过NUnit项目文件(.nunit)将单元测试加载到NUnit GUI中,单元测试就开始失败了。
我尝试了不同的配置文件名称,按照这篇博客所写的方法(Here),但是除了"app.config"之外的任何配置文件名称都会导致我的单元测试在任何情况下都失败。
也就是说,怎样设置才能确保无论如何都在STA下运行我的单元测试呢?
正如许多网站或博客(例如这里)所讨论的那样,我向我的 NUnit 测试程序集中添加了一个配置文件("app.config"),其内容如下。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="NUnit">
<section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
</configuration>
为了验证测试是否真正在STA下运行,我编写了以下测试用例:
[Test]
public void CheckSTA()
{
ApartmentState aptState = Thread.CurrentThread.GetApartmentState();
Assert.IsTrue(aptState == ApartmentState.STA);
}
如果我在NUnit控制台或NUnit GUI中运行我的单元测试而不使用NUnit项目文件,那么这个方法就可以正常工作。
然而,一旦我通过NUnit项目文件(.nunit)将单元测试加载到NUnit GUI中,单元测试就开始失败了。
我尝试了不同的配置文件名称,按照这篇博客所写的方法(Here),但是除了"app.config"之外的任何配置文件名称都会导致我的单元测试在任何情况下都失败。
也就是说,怎样设置才能确保无论如何都在STA下运行我的单元测试呢?
[Apartment(ApartmentState.STA)]
,则可以获得额外的积分。 - jnm2