3

バックグラウンド:

現在、データベースをヒットしてテストを行う約 10 のユニット/統合テスト プロジェクトがあります。データベースにヒットする各テスト クラスIntegrationTestは、 という別の dll にあるというクラスから継承しますTestBaseTestBaseデータベースへの接続文字列を格納する構成ファイル (nhibernate_log4net.cfg.xml) が含まれています。

私たちの開発チームは約 7 人か 8 人のグループです。2 人のチーム メンバーが同時に単体テストを実行すると、多くのテストで共通のデータが追加および削除されるため、競合が発生します。これにより、2 人の開発者の間でテストが誤って失敗する可能性がありました。

レイアウト:

TestBase.dll
IntegrationTest.cs ( [DeploymentItem("nhibernate_log4net.cfg.xml"]を含む)
nhibernate_log4net.cfg.xml
nhibernate_log4net.cfg.Developer 1.xml (変換ファイル)
nhibernate_log4net.cfg.Developer 2.xml (変換ファイル)
. ..

UnitTest.dll
参照 -> TestBase.dll
MyUnitTest.cs (TestBase.dll の IntegrationTest から継承)

問題:

私の考えは、チーム内の各開発者SlowCheetahの dll の構成ファイルで xml 変換を使用することでしたが、変換されたファイルは単体テストのOutTestBaseディレクトリにコピーされません。基本構成ファイル (変換されていないもの) は、Outディレクトリにコピーされるファイルです。そもそも構成ファイルを取得するために使用しなければならない属性が原因だと感じています。[DeploymentItem("nhibernate_log4net.cfg.xml")

単体テスト プロジェクトとは別の dll に含まれている xml 構成ファイルで xml 変換を使用する方法はありますか?

4

2 に答える 2

3

ここで概説されているように、 msbuildからターゲットを呼び出して、変換を手動で実行できます。

アップデート

問題を再現できました。地味ですが期待通りの出来だと思います。何が起こっているかは次のとおりです。

  • 構成変換が適用されています。変換されたファイルは、TestBase出力ディレクトリに配置されます。
  • テストで *[DeploymentItem("nhibernate_log4net.cfg.xml")]* を指定しましたが、ファイルがUnitTestプロジェクトに関連していないため、これは失敗します。これを補うために、構成ファイルに「Copy Local」= trueを指定しました。
  • 「ローカルにコピー」により、TestBase プロジェクトのコンテンツが UnitTest プロジェクトに確実にコピーされますが、変換前のファイルがソースの場所からコピーされるか、XmlTransform タスクが実行される前に bin フォルダーにファイルが移動されます。(私は前者だと思います)

これに対処するためのいくつかの提案:

  1. 構成ファイルをUnitTestライブラリに移動し、そこに変換を適用します。これにより、意図したとおりにテスト ランナーが構成をすぐに利用できるようになります。また

  2. 生成されたファイルをTestBaseフォルダーからコピーするように、(DeploymentItemAttribute ではなく) TestSettings ファイルで配置オプションを構成します。(<ソリューション ディレクトリ>\TestBase\bin\Debug\cfg.xml); また

  3. すべてのプロジェクトが同じ出力ディレクトリを共有するようにプロジェクトを変更します。これにより、DeploymentItem 属性によって、変換された TestBase 構成ファイルが TestRun フォルダーに確実にコピーされます。(ちなみに、依存関係とコンテンツを何度もコピーする必要がないため、共有出力フォルダーはビルドを高速化するための優れた方法です)

(また、SlowCheetahXml の主要な貢献者の 1 人である @SayedIbrahimHashimi に熱烈な支持を表明します。大ファンです。この拡張機能を大いに掘り下げてください)

于 2012-10-13T01:16:43.743 に答える
-1

SlowCheetah - 無料の XML 変換

このパッケージを使用すると、ビルド構成に基づいて app.config またはその他の XML ファイルを変換できます。また、XML 変換の作成に役立つツールも追加されています。

于 2013-01-16T18:50:51.273 に答える