我有一个简单的控制台应用程序。它是用一个普通的 main 来触发的,整个程序都在 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;
...
我尝试过设置
process.StartInfo.WorkingDirectory
to
AppDomain.CurrentDomain.BaseDirectory
and
Environment.CurrentDirectory;
但是我是否必须指定控制台应用程序可执行文件的完整相对路径,或者是否有一种改进的方式来启动“测试”应用程序的进程?
首先,我在“主”程序中作为一个类进行了测试,然后它工作得很好。当我将测试转移到他们自己的项目时,问题就开始了。这就是为什么我怀疑路径是问题或类似性质的问题。
我也尝试过 Running Program.Main 但感觉很不对:)
我建议将您的应用程序重组为:
-
Program
- 解析参数的入口点,创建一个Settings
实例
-
Settings
- 应用程序的设置(根据口味重命名)
-
BusinessClass
-(绝对重命名!)实际工作,它接受Settings
实例
现在您可以单独测试:
- 测试解析为
Settings
,即您是否正确使用解析器库
- 您的业务逻辑,其中单元测试创建适当的实例
Settings
如果可能的话,您应该将业务逻辑分离到单独的类中以解决不同的问题,并单独测试每个类。我们确实了解不够,无法在这里提出具体建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)