問題タブ [deploymentitem]
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# - DeploymentItem 属性の問題
私は現在、C#.net で記述された「古い」システムを維持しており、廃止された機能をいくつか削除し、リファクタリングを行っています。神に感謝します。前の人はいくつかの単体テスト (MSTests) を書きました。私は JUnit テストにはかなり慣れていますが、MSTests にはまだあまり慣れていません。
テスト メソッドには、DeploymentItem
テスト対象のビジネス ロジック メソッドによって解析されるテキスト ファイルを指定する属性と、DeploymentItem
展開する必要がある一連の TIF ファイルを含むパスのみが指定された 2 番目の属性があります。
テストは以前は機能していましたが、\files\tif ディレクトリに含まれる TIF ファイルの名前を変更する必要がありました。ルールに従って、TIF ファイル名は特定のパターンに一致する必要があり、これもExistsTifTest()
メソッドによってチェックされます。ファイル名を新しい要件に適応させるためにファイル名を変更する必要があり、突然、以前のように TIF ファイルが展開されなくなりました。
なぜこれが起こるのか、または何が原因なのか、誰かが私にヒントを与えることができますか? \files\valid\ ディレクトリの "valid_entries.txt" の横に "my2ndTest.txt" という新しいテキスト ファイルを追加し、テスト メソッドの DeploymentItem 属性に応じて、同じことが起こります。ファイルが展開されませんか?
testrunconfig で展開パスを直接定義してイメージを展開しましたが、なぜこれらのことが起こるのか、またはたとえば新しいファイル "my2ndTest.txt" が他のファイルが展開されるのに展開されない理由を理解したいと思います。
c# - 動的なオンザフライのDeploymentItemを持つことは可能ですか?
プロジェクトに同梱される特定のファイルの存在(およびその他のもの)を確認するためのテストを作成したいと思います。
これは私が今持っているものです:
ご覧のとおり、テストする別のファイルを追加する場合は、[DeploymentItem]と_Filesリストに追加する必要があります。
DeploymentItemsを動的に変更する方法はありますか?または、実行時にそれらから取得します。ここにはおそらく30を超えるファイルがあり、2つのリストは必要ありません。
前もって感謝します!
.net - DeploymentItemAttribute の相対パス ルートは何ですか?
MSTestを使用して、 DeploymentItemAttributeの相対パス ルートは何ですか。
c# - DeploymentItem 属性により、テスト クラスのすべてのテストが「クラス [TestClass] のインスタンスを作成できません」というエラーで失敗する
クラスに DeploymentItem 属性がある一連の単体テストを実行しようとすると、奇妙なエラーが発生します。
単体テスト ソリューションには 2 つのテスト クラスがあります。1 つはビジネス ロジックをテストするためのもので、これを「クラス a」と呼びます (これは問題なく動作します)。もう 1 つは、DeploymentItem ファイルからのデータの読み取りをテストするためのものです。 「クラスb」。
DeploymentItem 属性が 2 つのテスト クラス内の ANYWHERE に設定されていると、クラス b のテストはすべてエラーで失敗します...
クラス [クラス b] のインスタンスを作成できません。エラー: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません..
ただし、両方のクラスから DeploymentItem 属性を完全に削除すると、すべてのテストが実行されますが、読み取るファイルがないためクラス b で明らかに失敗し、すべてのアサートが失敗します。
問題を完全に説明したことを願っています。そうでない場合は、必要に応じてさらに明確にすることができます。助けてくれてとても感謝しています。
c# - DeploymentItem へのパラメーターとして静的変数を使用する C#
MSTest 単体テストのパラメーターとして静的変数を使用したいのですDeploymentItem
が、それができないようです。単体テストの実行時に DLL ファイルと一緒にコピーする必要がある XSL ファイルがあり、その場所を次のように定義しました。
ただし、次のことを行うと:
次のビルド エラーが発生します。
属性引数は、定数式、typeof 式、または属性パラメーター タイプの配列作成式でなければなりません
わかりました、わかりましたが、自分でパスを組み立てるのはとても汚いようです:
ここで使用したいことについて過度にうるさいPath.Combine
ですか?私が見逃している別の選択肢はありますか?XSL ファイルをルート ソリューション ディレクトリに置くだけでよいので、プロジェクト ディレクトリをパスの一部として渡す必要はありません。
c# - C#DeploymentItemがMSTest単体テスト用のファイルのコピーに失敗する
DeploymentItem
MSTest単体テストで属性を使用すると、XSLファイルをテストアセンブリと同じディレクトリにコピーするのに問題があります。この質問に対して選択した回答に従いました。コピーする必要のあるファイルの[出力ディレクトリにコピー]が[常にコピー]に設定されています。ProjectDir \ binディレクトリ(ターゲットディレクトリ)を確認すると、コピーしたいファイルがDLLやPDBと一緒に実際にそこにあります。
次の設定でいくつかの単体テストがあります。
MSTestのTestResults\特定のTestRun\Outディレクトリを確認すると、DLLとPDBが表示されますが、XSLファイルが存在しないため、XSLテストは失敗します。私が知りたいのは、Visual Studioに明示的にコピーするように指示した場合でも、XSLファイルがDLLおよびPDBと一緒にコピーされない理由DeploymentItem
です。
c# - MSTest VS2010 - 異なるマシンの異なる場所にファイルをコピーする DeploymentItem
DeploymentItem を見つけました
テストがビルドされ、異なるマシンで実行されるときに、テスト データ ファイルが同じ場所にコピーされません。
テスト データ ファイルは、私のマシンではテスト プロジェクトの "bin\debug" ディレクトリにコピーされますが、友人のマシンでは "TestResults\ name_machine YY-MM-DD HH_MM_SS \Out" にコピーされます。
私のマシンの bin\debug ディレクトリは、次のコードで取得できます。
同じコードがTestResults\*name_machine YY-MM-DD HH_MM_SS*\Out
友人の PC に返されます。
ただし、これは実際には問題ではありません。問題は、私が作成したテスト データ ファイルがフォルダー構造を持っていることです。このフォルダー構造は、私のマシンでは bin\debug にコピーされたときにのみ保持されますが、友人のマシンではファイルのみがTestResults\*name_machine YY-MM-DD HH_MM_SS*\Out
ディレクトリに追加されます。これは、私のマシンではテストが成功し、彼のマシンでは失敗することを意味します!
DeploymentItem が常に bin\debug フォルダーにコピーされるようにする方法はありますか? または、DeploymentItem がファイルをTestResults\*name_machine YY-MM-DD HH_MM_SS*\Out
フォルダーにコピーするときにフォルダー構造が保持されるようにする方法はありますか?
visual-studio-2010 - ソリューションごとに複数のテスト プロジェクトがある場合、DeploymentItem はディレクトリのコピーに失敗します
次のように特定のディレクトリをコピーするテストクラスとメソッドがいくつかあります。
これらのテストは 1 つのアセンブリにあり、LangaugeData ディレクトリ内のすべてのファイルのCopy to Output Directory
セットはCopy Always
.
Out
ソリューションにロードされたテスト アセンブリが 1 つだけであるか、テストを実行する唯一のアセンブリである限り (つまり、現在のコンテキスト/クラスでのみテストを実行する)、すべて正常に動作し、ディレクトリはテスト結果ディレクトリにコピーされます。
2 番目のアセンブリを追加してソリューション内のすべてのテストを実行するとすぐに、そのディレクトリはコピーされなくなりますが、個々のファイルである他の DeploymentItems は正常にコピーされるようです。
テスト自体はすべて引き続き実行されますが、そのディレクトリに依存するテストはクラッシュします。おそらく、MSTest がディレクトリを見つけられないためです。おそらく、他のテスト アセンブリのいずれかのビルド ディレクトリにあると想定しているのでしょうか。
コピーを妨げている複数のテスト プロジェクトについてのアイデアと、そのディレクトリ内のすべてのファイルを個別の DeploymentItem として追加する以外に、それを回避するためにできることはありますか?
unit-testing - MSTest の展開項目は、プロジェクトのテスト設定ファイルに存在する場合にのみ機能しますか?
MSTest 展開項目がどのように構成されるべきかを把握できないようです。プロジェクトのテスト設定ファイルを変更することで、それらを適切に機能させることができましたが、これは理想的とは言えません。展開項目の構成は個々のテストから分離されており、ファイルが変更されていない限り、ファイル パスは絶対パスとして保存されているように見えます。ソリューションフォルダーの下。
プロジェクトのテスト設定ファイルを作成/変更する必要がないか、[DeploymentItem]
属性を使用して展開項目を追加できないのでしょうか? どうすればこれを達成できますか?[TestClass]
[TestMethod]
(率直に言って、個別の展開項目構成の必要性がわかりません。展開項目にする必要があるプロジェクト ファイルに対して、既存の [出力ディレクトリにコピー] 設定を使用しないのはなぜですか?)
c# - 単体テストで古いDeploymentItemを削除するにはどうすればよいですか?
次のテストクラスを検討してください。
これらのテストが実行される順序によっては合格する場合がありますが、定義された順序で実行される保証はないため、実際の動作は非決定的です...明らかにこれは悪いことです。
TestCleanupAttributeを調べて実験しましたが、両方のテストに合格するための信頼できる方法を見つけることができませんでしたが、これを行う簡単な方法があるはずです。そのような方法はありますか?
更新:テストフレームワークは、DeploymentItemsが一度デプロイされると変更されないことを前提としているため、これは不可能のようです。したがって、各アイテムは1回だけデプロイされます。短期的には、この動作を必要としないようにテスト対象のコードを変更しました。長期的には、この仮定を行わない属性を実装する可能性があります。