inq*_*uam 8 c# nunit unit-testing
我有一个简单的控制台应用程序 它被普通的主要解雇了,整个程序都在main中.它使用命令行分析器库.然后我在解决方案中有第二个项目,包含应用程序的单元测试.但我似乎没有找到从测试中启动主程序进程的好方法.我当前启动该过程的代码看起来像这样.
...
process = new Process();
process.StartInfo.FileName = "FooBar";
process.StartInfo.Arguments = arguments;
// use it to start from testing environment
process.StartInfo.UseShellExecute = false;
// redirect outputs to have it in testing console
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
...
Run Code Online (Sandbox Code Playgroud)
我试过设置
process.StartInfo.WorkingDirectory
Run Code Online (Sandbox Code Playgroud)
至
AppDomain.CurrentDomain.BaseDirectory
Run Code Online (Sandbox Code Playgroud)
和
Environment.CurrentDirectory;
Run Code Online (Sandbox Code Playgroud)
但是,我是否必须为控制台应用程序可执行文件指定整个相对路径,还是有一种改进的方法来启动"已测试"应用程序的进程?首先,我在"主要"程序中将我的测试作为一个类,然后它工作得很好.当我将测试移动到他们自己的项目时,问题就开始了.这就是为什么我怀疑道路是问题或者那种性质的东西.
我也尝试过运行Program.Main,但这感觉很错:)
Jon*_*eet 20
我建议将您的应用程序重组为:
Program- 一个解析参数的入口点,创建一个Settings实例Settings - 应用程序的设置(根据品味重命名)BusinessClass- (绝对重命名!)实际工作,接受一个Settings实例现在您可以单独测试内容:
Settings,即你正确使用解析器库Settings如果可能,您应该将业务逻辑分离为单独的类,以便分别考虑单独的问题,并分别对每个问题进行测试.我们真的不知道在这里提出具体的建议.
| 归档时间: |
|
| 查看次数: |
19089 次 |
| 最近记录: |