Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 在VisualStudio2008IDE中运行单元测试时,如何传递命令行参数?_Visual Studio 2008_Unit Testing - Fatal编程技术网

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

Visual studio 2008 在VisualStudio2008IDE中运行单元测试时,如何传递命令行参数?,visual-studio-2008,unit-testing,Visual Studio 2008,Unit Testing,在VisualStudio2008中进行单元测试时,是否有方法将命令行参数传递给应用程序上下文?我的部分代码需要这样配置,我只能通过传递参数来实现 我已经检查了调试模式,命令行参数中已经填充了一些与测试相关的数据 谢谢 好的 我挖掘了很长时间,无法找到任何直接传递CLI参数的方法 但是,有一个很好的解决方法: 您需要一个类,它是CLI图形的解析器和持有者。在我的例子中,它是具有静态属性的无状态类。当然,它在单元测试期间返回空值,但没有可识别的CLI参数 必须以合理的方式编写CLIArgsHold

在VisualStudio2008中进行单元测试时,是否有方法将命令行参数传递给应用程序上下文?我的部分代码需要这样配置,我只能通过传递参数来实现

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

谢谢

好的

我挖掘了很长时间,无法找到任何直接传递CLI参数的方法

但是,有一个很好的解决方法:

您需要一个类,它是CLI图形的解析器和持有者。在我的例子中,它是具有静态属性的无状态类。当然,它在单元测试期间返回空值,但没有可识别的CLI参数 必须以合理的方式编写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;
         }
     }
     //...
}
在开始实际测试之前,您可以向该类的字段注入样本值,以便在以下情况下:

[ClassInitialize()]

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


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

我是否遗漏了什么?该类被声明为static,但没有任何内部字段/属性设置为static,这将不会按原样编译。