Как передать аргументы командной строки при запуске модульного теста в Visual Studio 2008 IDE? - PullRequest
1 голос
/ 08 июля 2011

Есть ли способ передать аргументы командной строки в текст приложения во время модульного тестирования в Visual Studio 2008?Часть моего кода должна быть настроена таким образом, и я могу сделать это только путем передачи аргументов.

Я проверил в режиме отладки, а аргументы командной строки заполнены некоторыми данными, связанными с тестом.

Спасибо!

1 Ответ

0 голосов
/ 14 июля 2011

Хорошо,

Я долго копался и не смог найти способа напрямую передать аргументы CLI.

Однако есть довольно хороший обходной путь:

  1. Вам нужен класс, который является синтаксическим анализатором и держателем для CLI-агрументов. В моем случае это астатический класс со статическими свойствами. Конечно, он возвращал нулевые значения во время модульного тестирования (без распознанных аргументов CLI)
  2. Ваш класс CLIArgsHolder должен быть написан разумным способом, чтобы возвращать нули и НЕ генерировать исключения при инициализации, если какой-либо из аргументов CLI отсутствует. В моем случае я выполняю синтаксический анализ только тогда, когда закрытое поле пустое или пустое, используя статическое свойство 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. Перед тем, как приступить к актуальному тестированию, вы можете ввести значения выборки в поля этого класса, например:

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

Voila!

Теперь все ваши классы могут использовать MyCLIArgsHolder со значениями, которые вы указали при инициализации тестового класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...