WinForms と WebApi (RC) の両方を含むさまざまなプロジェクトを含むソリューションがあります。以前のテストで から派生したクラスをインスタンス化すると、WebApi テストがハングするという問題が発生していますSystem.Windows.Forms.Form
。ここで問題を示すサンプル ソリューションを見つけることができます: https://dl.dropbox.com/u/3688049/SampleSolutions/TestSolution.zip
ソリューションでは NuGet パッケージの復元が有効になっているため、ビルド時にすべての依存関係がプルダウンされます。
Class1.csのvar form = new Form1();
呼び出しがコメント化されていない場合、テストはハングします (nunit の最新の nuget バージョンを使用)。コメントアウトされている場合、テストはパスします。
どんな助けでも大歓迎です。
Class1.cs
[TestFixture]
public class Class1
{
[Test]
public void AaaWindowsFormsApp() {
// If this line is not commented out the BbbTestWebApiApp test will hang.
var form = new Form1();
}
[Test]
public void BbbTestWebApiApp() {
var config = new HttpConfiguration();
var server = new HttpServer(config, new MyMessageHandler());
var client = new HttpClient(server);
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/");
var response = client.SendAsync(request).Result;
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
}
}
MyMessageHandler.cs
public class MyMessageHandler: DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
return Task.Factory.StartNew(() => request.CreateResponse(HttpStatusCode.OK));
}
}
アップデート
テストにRequiresSTA
属性を追加すると問題が解決するようです。System.Windows.Forms.Form
ただし、WebApi インメモリ ホスティングを追加すると問題が発生する理由はわかりません。
更新 2
RequiresSTA
GUI 経由でテストを実行している場合にのみ役立つようです。コンソール ランナーはまだハングしているようです。