c# - Visual Studio 单元测试 C# 的命令行参数

标签 c# unit-testing visual-studio-2012 batch-file mstest

我应该使用 VS 单元测试框架来确保所有代码都正常工作。然而,我在获取需要命令行参数才能工作的测试时遇到了很多麻烦(因为命令行输入必须在运行时给出......并且单元测试没有真正的“运行时”)。有没有办法使用命令行参数输入来运行我的单元测试?我意识到这不是构建程序的理想方式,但遗憾的是我无法决定测试过程的工作方式。

我读到过我可以编写批处理文件并将其包含在 MStest/testcontainer 文件夹中。不过,为了以这种方式做到这一点,我必须清除一些障碍。这些障碍包括:

1)我对批处理文件一无所知

2) 我不知道 MStest/testcontainer 文件夹在哪里,如何访问它,它是如何工作的,甚至不知道如何向其中添加文件(因为它似乎被隐藏或不容易访问)。

3) 我不知道我将如何处理批处理文件,即使它被正确写入并且在 MStest/testcontainer 文件夹中。我的测试怎么知道它在那里,更不用说从它那里获取输入了?

总结一下:如何让 VS 单元测试接受命令行参数?如果我必须使用批处理文件方法,我将非常感谢像我 5 岁时那样向我解释。如果我在这个问题上显得有点无助,我深表歉意,但我找不到任何清晰或有用的解释这些东西在这个特定的上下文中是如何工作的。

非常感谢。

最佳答案

简短,将解决您的问题,以及单元测试的不正确方法 :-) :

如果您的程序需要命令行参数,那么它应该有 static void Main(string[] args) 方法。

只需编写您的单元测试以使用您通常添加的任何命令行参数调用此方法。

更长、更好的方法: 将您的功能一分为二 - 一个完成工作的类,以及一个简单的程序,它获取命令行参数并将它们传递给工作人员。

编写 2 个单元测试 - 一个,Main(xxx) 实际上将参数传递给您的类,并为您的实际工作人员进行许多单元测试,以根据这些参数验证其行为。

关于c# - Visual Studio 单元测试 C# 的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624134/

相关文章:

c# - WPF 功能区中的垂直分隔符

c# - 从特定位置从 C# 中的字符串中提取值

c# - weka .net ikvm -> 为什么加载 csv 文件这么慢?

unit-testing - 我如何测试一个事件已经在 AngularJS 中广播?

c++ - 创建 Visual Studio 属性表以简化 C++ 库的使用

windows - 尝试使用在 IDL 中创建的 COM 对象时出现链接器错误

c# - WPF MVVM 命令 : Multiple Command Parameters

java - 如何使用 Mockito 测试 sendEmail() 方法而不发送电子邮件?

java - 无法使用mockito对该方法中引发的异常进行单元测试

c++ - Windows 找不到 hcw