問題タブ [mstest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - Visual Studio MSTest の実行が開始に失敗する
Visual Studio 2005 の組み込みの単体テスト機能を使用して構築された単体テストが多数あります。ここしばらくの間、テストを開始するのに永遠に時間がかかりました... すべてが 2 分以上「保留中」のままです。現在、Visual Studio は物事を新しいレベルに引き上げ、テストを開始することさえしないことを決定しました。2 ~ 3 分後、実行が中止され、エラー メッセージがログに記録されます。
ID {bfba05b1-afe5-499e-b452-29167f414f0f} のテスト実行 '(blahblahblah)' をキューに入れることができませんでした: Microsoft.VisualStudio.TestTools.TestManagement.ExecutionException: ローカル実行のための通信環境を確立できませんでした。
誰にもアイデアはありますか?中期的には、NUnit に切り替える予定ですが、チームの他のメンバーは既に Visual Studio をインストールしており、実際にテストを実行するよう説得しやすくなるため、今のところは Visual Studio に固執することをお勧めします。 . ;-)
c# - 実行前にMSTEST TestMethodにすべてのシングルトン/静的を強制的にリセットさせる方法は?
Visual Studio 2008 内で MSTEST を使用しています。各テストを実行する前にすべてのグローバル状態がリセットされるように、特定のテスト クラスの各単体テスト メソッドを最初に実行するテストであるかのように動作させるにはどうすればよいですか? TestInitialize、ClassInitialize、AssemblyInitialize などを使用して明示的に世界をクリーンアップしたくありません。例:
このトピックには同様の質問がありましたが、テストが並行して実行されないことが明確になっただけです。テストが連続して実行されることはわかっていますが、メソッドごとに新しい AppDomain を明示的に強制する方法 (またはすべての状態をクリアする同等のもの) はないようです。
理想的には、単体テストの小さなサブセットに対してのみこの動作を指定して、グローバル状態を気にしないテストのために新しい AppDomain を作成するというペナルティを支払う必要がないようにしたいと考えています (大部分の私のテスト)。
mstest - ソース アセンブリが信頼されていないため、MSTest の実行が失敗する
xUnit をテスト プロジェクトに追加したところ (Assert の場合は、まだフレームワークとして MSTest を使用しています)、すぐにテストの実行でテストの実行が拒否されました。これはエラーメッセージです:
テスト実行 '{ .... }' をキューに入れることができませんでした テスト実行の展開の問題: ファイルまたはディレクトリ '...xUnit.dll' の場所は信頼されていません。
c# - MSTestのTestMethod間で状態を共有する
MSTestのTestMethods間で状態を共有するにはどうすればよいですか。これらのテストは、順序付きテストとして順番に実行されます。
前もって感謝します。
.net - System.BadImageFormatException のトラブルシューティングに役立ちます:
ローカル Web サービスに接続している .NET 3.5 SP1 プロジェクトをデバッグしているときに、例外が発生します。
System.BadImageFormatException: "クラス トークンが正しくありません"
もちろん、例外の原因についての詳細はあまりありません。
これが発生するメソッドは、呼び出し元と同じクラスにあり、デバッガーは到達できません。この例外は、Web サービスに接続するメソッドの呼び出しで発生します。Web サービスと通信する方法は他にもあるので、参考にしてください。
メソッドの単体テストも同じ例外で失敗しています。
訂正:メソッドの単体テストは成功しており、混乱を助長しています。
この例外を追跡する方法を知っている人はいますか? 例外クラスに関するドキュメントを読みましたが、アセンブリの 1 つがそのバージョンで正しくないか、ビルドに問題があると思われます。
この例外のトラブルシューティングで他にどのような手順をお勧めしますか?
multithreading - 別のスレッドから発生するイベントをリッスンする MSTest 単体テストを作成する方法は?
呼び出しているオブジェクトからイベントを受け取ることを期待するテストを書いています。具体的には、(オープン ソースの Granados プロジェクトを使用して) SSH 経由で AIX マシンに接続するオブジェクトを呼び出してから切断し、切断中に発生する OnConnectionClosed イベントを確実に受け取りたいと考えています。簡単そうに思えますが、私は過去にこのようなテストをたくさん書いてきましたが、今回は、スレッドに関連していると思われる奇妙な動作が発生しています。
基本的に、私が呼び出したオブジェクトは、呼び出し元とは別のスレッドで「OnConnectionClosed」イベントを発生させています。私が見ているのは、UI から [テストのデバッグ] を選択してテストを実行すると成功するが、[テストの実行] を選択すると失敗することです (デバッグの実行中にブレークポイントが設定されていなくても)。グーグルで検索したところ、デフォルトでは MSTest ホストがシングル スレッド モードで実行されているが、設定を変更することでマルチ スレッド モードで実行できることを示していると思われるこの投稿が見つかりました。これは私の問題を論理的に解決するように聞こえましたが、もちろんそうではありませんでした.
私が遭遇した他のいくつかの投稿も、MSTest が単にバックグラウンド スレッドを監視していないと思わせます (そのため、それらによって発生したイベントは「聞いていません」)。これも理にかなっており、デバッグモードで動作しているように見え、上記の修正はその問題を論理的に解決するはずなので、なぜ動作しないのか混乱しています. スレッドを正しく処理していない可能性がありますが、その場合でもデバッグ モードで問題が発生すると予想されます。
他の誰かが同様の方法で何かをテストしようとしましたか? もしそうなら、同様の問題に遭遇しましたか? もしそうなら、どのように解決しましたか?
関連する単体テスト コードを以下に貼り付けました (セキュリティ上の理由から接続情報を削除しました)。
msbuild - NUnitおよびNAntの将来の考慮事項
.NET v1の期間中、私はNUnitとNAntの追加ツールを使用して、テスト駆動および自動ビルドの作業習慣を開発するよう同僚を説得することに成功しませんでした。.NETFramework2.0とVisualStudio2005 Team Suiteが登場したとき、私はチームにテストの作成を「強制」し、VisualStudio内で視覚的なテストを提供することができました。さらに、追加のMSBuildタスクを使用してプロジェクトファイルを微調整し、ビルドの自動化をさらに実行することができました。
もちろん、これはマイクロソフトが完璧なシステムを提供したことを意味するものではありませんが、彼らはこれらを正しいステップで進めてきたと思います。これらすべての機能がフレームワークと製品に組み込まれ、「ネイティブ」になることで、開発者をより良い開発手法に移行させることが少し簡単になりました。
オープンソースのオプション(私は見逃している)を長い間忘れていたので、NUnitとNAntの現在の化身はどのような価値提案を持っているのだろうかと思います。チームにMSBuildまたはMSTestを使用しないように説得するために、この段階でどのようなケースを主張できますか?
明確化:私の会社は純粋なMicrosoftSIです。Visual Studio Team Suiteエディション、Database Professionalエディション、TFSなどを使用できます。VisualStudioProfessionalエディション以下は使用していません。
c# - WebTest に失敗するにはどうすればよいですか?
私は Microsoft WebTest を使用しており、NUnit のAssert.Fail()
. 私が思いついた最善の方法throw new webTestException()
は、テスト結果でError
はFailure
.
失敗を示すためにプライベートメンバー変数を設定することを反映する以外に、WebTest
私が見逃しているものはありますか?
編集: メソッドも使用しましたAssert.Fail()
が、WebTest 内から使用すると失敗ではなくエラーとして表示され、Outcome
プロパティは読み取り専用です (パブリック セッターはありません)。
編集:さて、私は本当に困惑しています。リフレクションを使用してOutcome
プロパティを Failed に設定しましたが、テストは引き続き成功します。
Oucome を失敗に設定するコードは次のとおりです。
そして、これが私が失敗しようとしているコードです:
Outcome
に設定されてOucome.Fail
いますが、どうやら WebTest フレームワークは実際にはこれを使用してテストの合格/不合格の結果を判断していません。
c# - 単体テストで「出力ディレクトリにコピー」を機能させるにはどうすればよいですか?
テストを実行する前に単体テスト プロジェクトをビルドすると、テスト出力が TestResults フォルダーにコピーされてから、テストが実行されます。私が抱えている問題は、Debug/bin ディレクトリ内のすべてのファイルが TestResults プロジェクトにコピーされないことです。
Debug/bin ディレクトリにコピーされたファイルを TestResults フォルダにもコピーするにはどうすればよいですか?
mstest - MSTest は、起動するたびに特定のメソッドを実行できますか?
質問
テスト アセンブリが MSTest を介して実行されるときは常にメソッドを実行する方法はありますか?
[TestInitialize] および [ClassInitialize] 属性がどのように機能するかに似ていますが、アセンブリ全体が対象です。すべてのテスト クラスの [ClassInitialize] メソッドにコードを追加する必要はありません。
推論
私のテストのいくつかは、データベースと対話します。本番データベースに非常に有害なデータやその他のものを削除します。単体テスト プロジェクトを非運用データベースに対して実行するように指示する構成ファイルのみがあります。
起動時に「OK データベース名は『本番』ではありません」となるような方法があればもっといいのですが。
アイデア
Log4Net は、アセンブリ属性を使用してそれ自体を構成します。
おそらく私は似たようなことをすることができますか?