2011-07-08 1 views
1

Visual Studio 2008の単体テスト中にコマンドライン引数をアプリケーションのコンテキストに渡す方法はありますか?私のコードの一部は、このように設定する必要があり、私は引数を渡すことによってこれを行うことができます。ビジュアルスタジオ2008 IDEで単体テストを実行しているときに、どのようにコマンドライン引数を渡すことができますか?

私はデバッグモードでチェックインし、コマンドライン引数にはテスト関連のデータが入っています。

ありがとうございます!

答えて

0

[OK]を、

私は長い時間のために掘って、直接CLI引数を渡すためにどのような方法を見つけることができませんでした。

は、しかしかなりいい回避策があります:

  1. あなたはCLIのagrumentsのためのパーサとホルダーであるクラスが必要です。私の場合、静的な性質を持つ静的なクラスです。もちろん、ユニットテスト中にnull値が返されていました(認識されたCLI引数はありません)
  2. CLIArgsHolderクラスは、nullを返すような方法で記述し、CLI引数がないと初期化するときに例外をスローしないようにする必要があります。私の場合、パブリックフィールドがnullの場合、または静的プロパティのgetを使用して空の場合のみ解析します。

    public static class MyCLIArgsHandler 
    { 
        private string mAppName = null; 
        private string mStationName = null; 
    
        public string StationName 
        { 
         get 
         { 
          if(string.isNullOrEmpty(MyCLIArgsHandler.mStationName)) 
          { 
           //PARSE CLI ARGS 
          } 
          return MyCLIArgsHandler.mStationName; 
         } 
        } 
        //... 
    } 
    
  3. あなたはactuallあなたはとてもそのクラスのフィールドにサンプル値を注入することができるテストを開始する前に:

    [ClassInitialize()] 
    
    public static void MyClassInitialize(TestContext testContext) 
    {    
        PrivateType type = new PrivateType(typeof (MyCLIArgsHolder)); 
        type.SetStaticFieldOrProperty("mAppName", "myTestAppName"); 
        type.SetStaticFieldOrProperty("mStationName", "myTestStationName"); 
    } 
    

出来上がり!

これで、すべてのクラスでMyCLIArgsHolderをテストクラスの初期化に使用した値で使用できるようになりました。

関連する問題