問題タブ [vs-unit-testing-framework]
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.
c# - カスタムデータ駆動型MSTest
データ駆動型テストの入力として使用する必要があるExcelから作成されたXMLスプレッドシートファイルがあります。DataSource
Oledbプロバイダーとのファイルの解析に不整合があるため、テストメソッドで属性を使用できません。DataSource
属性のようにネストされたテスト結果を得る方法があるかどうか疑問に思いましたか?
失敗したアサーション例外をキャッチして失敗のコレクションを保持するのではなく、MSTestが繰り返された各行の内訳を表示することをお勧めします。もちろん、テストをすべての行に対して実行し、最初に失敗したアサーションで実行を終了しないようにします。
DataSource属性を介してデータをロードすることを主張する答えを探していません。ありがとう
c# - MSTestInitializeで実行する次のテストメソッドを見つけます
特定のテスト方法のテストデータを関数と同じ名前のフォルダーに保存します。以前は、それぞれ[TestMethod]
で同じ関数呼び出しを実行しました。ClearAllAndLoadTestMethodData()
これにより、を介してメソッド名が決定されましたStackTrace
。ここで、この関数をに移動しました[TestInitialize]
。実行しようとしているメソッドの名前を見つけるにはどうすればよいですか?
TestContext
私はこれを提供すると思いました。私はそれを介してアクセスでき[AssemblyInitialize()]
、最初の実行時にそのプロパティName
はテストメソッドの名前に設定されます。ただし、後でこれは変更されません(オブジェクトを静的フィールドに保存した場合)。
visual-studio - VisualStudioの単体テスト-Nunitのような複数のケース
Nunitでは、複数のケースでテストメソッドを再利用できます。
Visual Studioのテストフレームワークでこれを行うにはどうすればよいですか?
c# - VS2012は、テストメソッドの実行後にプログラムの新しいインスタンスを実行します
プログラムの起動時に値がロードされる静的構成クラスがあり、それを変更しようとすると例外がスローされます。
残念ながら、VS2012の単体テストスイートは、テスト全体で実行されているプログラムの同じインスタンスを保持しているため、さまざまなテストでさまざまな構成をテストしたいと思います。ランナーにプログラムを「リセット」させたり、プログラムの新しいインスタンスでさらにテストを実行させたりする方法はありますか?このシナリオに合わせるためだけに、構成クラスに回避策コードを追加しないようにこれを実行したいと思います。
c# - TestInitialize および TestCleanup でマークされたクラスが実行されない
私はこれに苦労してきました。うまくいけば、他の誰かを助けるでしょう。
MsTest を使用して単体テストを作成しているときに、各テストで同じコードを繰り返していることを発見し、いくつかの便利な属性 ( TestInitialize
、TestCleanup
、ClassInitialize
、およびClassCleanup
) を見つけました。
おそらく、これらの属性のいずれかでメソッドをマークすると、自動的に実行されるはずです(各テストの前、各テストの後、すべてのテストの前、すべてのテストの後にそれぞれ)。イライラすることに、これは起こらず、私のテストは失敗しました。属性でマークされたクラスからこれらのメソッドを直接呼び出すとTestMethod
、テストは成功しました。彼らが単独で実行していないことは明らかでした。
私が使用していたサンプルコードは次のとおりです。
では、なぜこれが実行されないのでしょうか。
database - Visual Studio Premium 2010 で [単体テストの作成] オプションがグレー表示される
Unitll 数日前、すべてが機能していましたが、今日、データベース スキーマ ビューの [Create Unit Test] オプションがグレー表示されています。私はすべての参照を確認し、適切に配置されています。何か提案はありますか?
c# - テスト エクスプローラーにネットワーク ドライブを使用した単体テストのリストが表示されない
一連の単体テストを含む単純な C# プログラムがありました。これは Visual Studio 2010 で開発されました。別のコンピューターで、このソリューションを Visual Studio 2012 でリロードしてテストを実行しようとしました。ソリューションを正常に再構築できましたが、単体テストがテスト エクスプローラーに表示されません。Visual Studio プロジェクト (ソリューション) は、LaCie Ethernet ネットワーク ドライブ上にありました。ソリューション全体をローカル C: ドライブにコピーし、ネットワーク ドライブからソリューションを閉じて、コピーしたソリューションをローカル C: ドライブで再度開きました。ソリューションをビルドすると、テスト エクスプローラーにすべてのテストが表示されます。戻ってネットワーク ドライブ上のコピーを開きましたが、テスト エクスプローラーにはテストが表示されません。テストのリストを表示するソリューションをビルドするように指示されています。ただし、メイン プロジェクトと単体テスト プロジェクトを含むソリューションを正常にビルドした後も、同じメッセージが表示されます。下の画像を参照してください。
プロジェクトがネットワーク ドライブにあると、単体テストがこのように失敗し、失敗メッセージがまったく表示されないのはなぜですか?
c# - UnitTesting : 基になる RCW から分離された COM オブジェクトは使用できません
C# で 1 つの UnitTesting プロジェクトを作成しましたが、いくつかの問題に直面しています。
まず、最初に 1 回だけ実行する必要があるいくつかの接続機能を実行したいと考えました。その後、Excelファイルからいくつかのレコードを読み取ろうとして、いくつかの挿入操作をテストしています。挿入が発生するたびに、そのコンストラクターが呼び出されてから Initialize メソッドが呼び出された後に TestCleanUp() が起動されます。各レコードが 1 回だけ挿入された後にコンストラクターが起動することは望ましくありません。Connect 機能を配置する場所と、毎回コンストラクターを呼び出さないようにする方法がわかりません。
提案どおり、ClassInitialize で初期接続を確立できるようになりました。ClassInitialize で COM オブジェクトのインスタンスを作成しているので、初期接続を確立しています。今、私はテストする別の Testmethod を持っています。プログラムを実行すると、最初のテストメソッドを実行した後に例外が発生します。「基礎となる RCW から分離された COM オブジェクトは使用できません」?
2番目のテストメソッドを実行しようとしているときに、COMオブジェクトが破壊されていると思います。この COM オブジェクトを維持するにはどうすればよいですか? 私は ReleaseCOMObject を呼び出していません。
visual-studio-2012 - VS2012 単体テストでのコード カバレッジのエラー
初めて単体テストを既存のソリューションに追加します。これは、さまざまな種類のプロジェクトのレガシー ソリューションです。私の単体テスト プロジェクトは、クラス ライブラリであるソリューション内の他の 1 つのプロジェクトのみを参照します。
テストは正常に実行されますが、[選択したテストのコード カバレッジを分析] を選択すると、Visual Studio がクラッシュするか、[出力 – テスト] ウィンドウに次のエラーが表示されます。
そのようなインターフェイスはサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))
そのようなインターフェイスはサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))
別の新しいソリューションで単体テストとコード カバレッジを実行してみましたが、すべて正常に動作します。これは、既存のコードやソリューションに問題があると思わせます。
どこから探し始めればいいのかもわかりません。助言がありますか?
ありがとう、
スキップ
c# - ユニット テストの有効な文字のベスト プラクティス
メソッドが文字列を入力パラメーターとして受け入れ、この文字列には 1 から 8 までの数字とダッシュ ("/") のみを含める必要があるとします。
テスト駆動型を開発する場合、メソッドが適切な引数チェックを行うことを検証する単体テストをどのように記述しますか?
私が最初に考えたのは、要件を逆にして ArgumentException をテストすることでした。つまり、他のすべての可能な文字を使用してメソッドを呼び出し、ArgumentException を予期するデータ駆動型単体テストを用意することでした。とはいえ、ハンマーでナッツを割るような感じです...
そのような状況のためのベストプラクティスはありますか?