NUnitユニットテストでいくつかのWPFコンポーネントを使用する必要があります。 ReSharperを使用してテストを実行しましたが、WPFオブジェクトを使用すると、次のエラーで失敗します。
System.InvalidOperationException:
多くのUIコンポーネントがこれを必要とするため、呼び出しスレッドはSTAである必要があります。
この問題について読みましたが、スレッドは [〜#〜] sta [〜#〜] である必要があるようですが、これを行う方法はまだわかりません。問題を引き起こすのは次のコードです。
[Test]
public void MyTest()
{
var textBox = new TextBox();
textBox.Text = "Some text"; // <-- This causes the exception.
}
this を試しましたか?
...テストしようとしているdllのapp.configファイルを作成し、NUnitに適切な設定を追加して、NUnitにMTAではなくSTAとしてテスト環境を作成させるだけです。
便宜上、必要な構成ファイルは次のとおりです(またはこれらのセクションを既存の構成ファイルに追加します)。
<?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>
RequiresSTA 属性をテストクラスに追加する必要があります。
[TestFixture, RequiresSTA]
public class MyTestClass
{
}
最近のバージョンでは、属性が変更されました。
[Apartment(ApartmentState.STA)]
public class MyTestClass
{}