如何在visual studio 2008 IDE中运行单元测试时传递命令行参数?

时间:2011-07-08 04:32:36

标签: visual-studio-2008 unit-testing

在Visual Studio 2008中进行单元测试期间,有没有办法将命令行参数传递给应用程序cotext?我的部分代码需要以这种方式配置,我只能通过传递参数来实现。

我已经检查了调试模式,并且命令行参数已经填充了一些与测试相关的数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

确定,

我正在挖掘很长时间,并且无法找到任何直接传递CLI参数的方法。

然而,有一个非常好的解决方法:

  1. 您需要一个类,它是CLI agruments的解析器和持有者。在我的例子中,它是具有静态属性的静态类。当然它在单元测试期间返回空值(没有公认的CLI参数)
  2. 您的CLIArgsHolder类必须以合理的方式编写以返回空值,并且如果缺少任何CLI参数,则在初始化时不抛出异常。在我的情况下,我只在私有字段为null或使用静态属性获取为空时解析。

    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");
    }
    
  4. 瞧!

    现在,您的所有类都可以将MyCLIArgsHolder与您在测试类初始化中输入的值一起使用。