在 Visual Studio 2008 IDE 中运行单元测试时如何传递命令行参数?
在 Visual Studio 2008 中进行单元测试期间,有没有办法将命令行参数传递给应用程序上下文?我的部分代码需要以这种方式配置,我只能通过传递参数来做到这一点。
我已经检查了调试模式,并且命令行参数已填充了一些测试相关的数据。
谢谢!
Is there a way to pass command line arguments to the application cotext during unit testing in Visual Studio 2008? Part of my code needs to be configured this way and i can only do this by passing arguments.
I've checked in the debug mode and command line arguments has been filled with some test related data.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,
我挖了很长时间,没能找到任何直接传递 CLI 参数的方法。
然而,有一个非常好的解决方法:
您的 CLIArgsHolder 类必须以合理的方式编写,以返回空值,并且在初始化时如果缺少任何 CLI 参数,则不会抛出异常。就我而言,我仅在私有字段为 null 或为空时使用静态属性的 get 进行解析。
在开始实际测试之前,您可以将示例值注入到该类的字段中,以便:
<前><代码>[ClassInitialize()]
公共静态无效MyClassInitialize(TestContext testContext)
{
PrivateType 类型 = new PrivateType(typeof (MyCLIArgsHolder));
type.SetStaticFieldOrProperty("mAppName", "myTestAppName");
type.SetStaticFieldOrProperty("mStationName", "myTestStationName");
}
瞧!
现在,您的所有类都可以将 MyCLIArgsHolder 与您在测试类初始化中放入的值一起使用。
Ok,
I was digging for a long time and was not able to find any way to pass CLI arguments directly.
However there is pretty nice workaround:
Your CLIArgsHolder class must be written in a sane way to return nulls and NOT throw exceptions when it initializes if any of CLI args is missing. In my case I parse only when private field is null or empty using static property's get.
Before you start actuall testing you can inject sample values to fields of that class so when:
Voila!
Now all your classes can use your MyCLIArgsHolder with values you put in your test class initialization.