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