2012-08-26 13 views
9

私はVS2012にアップグレードしようとしているVS2010ソリューションを持っています。VS2010とVS2012でDeploymentItemの動作が異なります

私はVS2012のMSTestユニットテストに問題があります。すべてのテストには、テストクラスのDeploymentItem属性が含まれています。 2010年

[TestClass] 
[DeploymentItem(@"SubDir\SubDir2\models", "models")] 
public class UnitTests 
{ ... } 

、それは正しくSolutionDirectory\SubDir\SubDir2\modelsディレクトリから依存ファイルをコピーします。 2012年

、テストが、私は以前の動作を復元する方法を探していますSolutionDirectory\UnitTests\bin\debug\SubDir\SubDir2\models

を展開されたディレクトリからコピーしようとしています。

答えて

1

vs2012と.net 4.5をインストールした後、deploymentitemattributeがファイルを移動する場所と同期していないように見えます。また、テスト実行中に実行可能ファイルが検索される場所も見えます。

格安回避策:

  1. ファイルが変更
  2. にする前に、その場所に

を探すためにテストコードを移動している

  • を参照してくださいそのままdeploymentitemattributeパスを残しますこのアップグレードmstestは、binディレクトリ内のサブディレクトリに移動されたとしても配備アイテムを見つけるのに十分なほどスマートでした。これはもはやケースではないようだ。

    次のようになりますあなたのユニットテストコードの行をアップグレードするので、前に...

    FileInfo fi = new FileInfo("temp.txt"); 
    

    次のようになりますあなたのユニットテストコードの行をアップグレードした後...

    FileInfo fi = new FileInfo("\SubDir\SubDir2\models\temp.txt"); 
    
  • +1

    私はあなたが言っていることを見ています。残念ながら、私が復元しようとしていたテストは、「ユニットテスト」よりも「統合」されており、バイナリへのパスは他の場所でハードコードされていました。私の "安価な回避策"は、プロジェクト内のファイルへのリンクを作成し、ビルド時にコピーするように設定した後、 "DeploymentItem"属性を変更してビルドディレクトリからコピーしました。動作しますが、大きな問題は解決しません。 –

    4

    ソリューションにテスト設定ファイルを作成する場合は、その中にデプロイメントを有効にして(デフォルトではテスト設定でデプロイメントがオフになっています)、テストエクスプローラ(テスト - >テスト設定 - >テスト設定ファイルの選択)コードを変更することなく動作するはずです。

    +2

    私のために働いた:) VS 2010にVS 2010のプロジェクトは、私がこれを行うまで私のテストデータをコピーしていたwasnt。 – Cadab

    関連する問題