Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9297

【VS2017+NUnit】[テスト実行]が急にできなくなるトラブルと復帰方法

$
0
0
概要 Visual Studio2017 + NUnitの組合せでが発生した事象(動画あり)と復帰方法を紹介する。 経緯 何度か本事象に遭遇し、Visual Studio2017の最新バージョン(15.9.36 。2021/05/28時点で最新)なら回避できるかを試した。 検証結果を情報共有するために記事にした。 まとめ 先にまとめを示しておきます。 Visual Studio2017+NUnitの組合せで本事象は発生する。 Microsoft Developer Community、StackOverFlowで同様の報告がされている。 Visual Studio2019は本事象を修正済み。 Visual Studioでは、テスト実行時に内部的に通信を行っており、[テストのデバック実行]と[デバックの中断]を繰り返すと、本事象が発生につながる。 復帰方法はVisual Studioを再起動すること。 Visual Studio2017の最新版でも本事象が発生した。 トラブルの内容 アクティブだったテストが急に実行できなくなる(下記動画を参照)。 補足説明をします。 事象が発生するまで「テストをデバック」を実行すると、ブレークポイントで止まっていた。事象が発生すると、テスト関数まで到達しない。 コンソール出力を確認すると、下記の例外が出力されている。 例外のスタックトレースは[調査結果]に掲載する。 System.Reflection.TargetInvocationException: 呼び出しのターゲットが例外をスローしました。 ---> System.IO.IOException: 転送接続にデータを書き込めません: 確立された接続がホスト コンピューターのソウトウェアによって中止されました。 ---> System.Net.Sockets.SocketException: 確立された接続がホスト コンピューターのソウトウェアによって中止されました。 テスト対象コードは単なる条件判定の関数である(下記を参照)。  単純なコードで検証した。例外にSocketExceptionが出ているが、通信していない。 テスト対象コード public class Foo { public bool Hoge(int a, int b) { if (a >= 0) { if (b >= 0) return true; Console.WriteLine("PASS1"); return false; } Console.WriteLine("PASS2"); return false; } テストコードは下記のとおり。特殊なことは一切していない。 テストコード [TestFixture] public class TestFoo { [Test] public void TestHoge_False() { var foo= new Foo(); Assert.IsFalse(foo.Hoge(-1, -2)); } [Test] public void TestHoge_True() { var foo = new Foo(); Assert.IsTrue(foo.Hoge(1, 2)); } } 復帰方法 事象が発生したら、Visual Studioを再起動する。 調査結果 Microsoft Developer Community、StackOverFlowで同様の報告がされている。 例外内容、スタックトレース内容は同一。折りたたみで例外の詳細を掲載する。 例外の詳細 The active Tests Run was aborted. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.IO.BufferedStream.WriteByte(Byte value) at System.IO.BinaryWriter.Write(Byte value) at System.IO.BinaryWriter.Write7BitEncodedInt(Int32 value) at System.IO.BinaryWriter.Write(String value) at Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.SocketCommunicationManager.WriteAndFlushToChannel(String rawMessage) at M icrosoft.VisualStudio.TestPlatform.CommunicationUtilities.SocketCommunicationManager.SendMessage(String messageType) at Microsoft.TestPlatform.VsTestConsole.TranslationLayer.VsTestConsoleRequestSender.AbortTestRun() at Microsoft.TestPlatform.VsTestConsole.TranslationLayer.VsTestConsoleWrapper.AbortTestRun() at Microsoft.VisualStudio.TestWindow.TestPlatformV2.ProxyRunRequest.Abort() at Microsoft.VisualStudio.TestWindow.TestPlatformV2.ProxyRunRequest.Dispose() at Microsoft.VisualStudio.TestWindow.Controller.Request.d_95.MoveNext() --- End of inner exception stack trace --- at Microsoft.VisualStudio.TestWindow.Controller.Request.d_94.MoveNext() 報告事例を読んで分かったこと No 分かったこと 1 Visual Studio 2019 V16.0.1で過去に発生していた 。Visual Studio 2019は修正された。 (Microsoft Developer Communityから引用) 2 Visual Studio 2017で他の人も発生したと言っている。 3 一日に複数回の頻度で発生したという人もいる。 4 [テストのデバック(Ctrl+R,Ctrl+T)]を押して、テストを中断することが関連している様子。 検証方法 調査結果を踏まえて、下記手順を事象が発生するまで繰り返した。 1. [テストのデバック(Ctrl+R,Ctrl+T)] 2.[デバックの停止(Shift + F5)] 検証環境 開発環境 Visual Studio Community 2017(Version 15.9.36) .NETFramework 4.6.2(C#を使用) NUnit V3.13.2 NUnit3TestAdapter V3.17.0 PC Windows 10 Home 21H1 64bitOS Intel Core i7-7700HQ CPU@2.80GHz 実装RAM 16.0GB 検証結果 153回(約40分)ほどで再現した。 検証作業以前に何度か遭遇しているため、再現確認は一度のみ。 事象再現時の通信状態をTCPViewで確認した。 Visual Studioがテスト時に内部的に通信が発生している。何故かはわからないが、ソケットの処理でコケたってことだね。 感想 虚しい検証作業(単純作業)だった。。。 参考 Microsoft Developer Community StackOverFlow TCPView

Viewing all articles
Browse latest Browse all 9297

Trending Articles