gpt4 book ai didi

c# - 单元测试控制台 c# 应用程序的最佳方法

转载 作者:太空狗 更新时间:2023-10-29 18:07:32 26 4
gpt4 key购买 nike

我有一个简单的控制台应用程序。它是用普通的 main 启动的,整个程序都在 main 中。它使用 Command Line Parser Library .然后我在包含应用程序单元测试的解决方案中有第二个项目。但是我似乎没有找到从测试中启动主程序进程的好方法。我当前实际启动流程的代码如下所示。

...

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

AppDomain.CurrentDomain.BaseDirectory

Environment.CurrentDirectory;

但是我是否必须为控制台应用程序可执行文件指定完整的相对路径,或者是否有一种改进的方式来启动“测试”应用程序的进程?首先,我将我的测试作为“主”程序中的一个类进行,然后它运行得很好。当我将测试移至他们自己的项目时,问题就开始了。这就是为什么我怀疑路径是问题或类似性质的原因。

我也试过 Running Program.Main 但这感觉很不对:)

最佳答案

我建议将您的应用重组为:

  • Program - 解析参数的入口点,创建 Settings 实例
  • 设置 - 应用程序设置(根据喜好重命名)
  • BusinessClass -(绝对重命名!)实际工作,它接受一个 Settings 实例

现在你可以单独测试了:

  • 测试对 Settings 的解析,即您是否正确使用了解析器库
  • 您的业务逻辑,其中单元测试创​​建适当的 Settings 实例

当然,如果可能,您应该将业务逻辑分离到单独的类中以处理不同的问题,并分别进行测试。我们真的不够了解,无法在这里提出具体建议。

关于c# - 单元测试控制台 c# 应用程序的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com