单元测试中的Application.ExecutablePath与Debug C#中的不同

时间:2016-05-03 16:35:27

标签: c# unit-testing configuration config app-config

调试行

 Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

Aplication.Executable将在Bin \ Debug。

中返回我的程序.EXE文件路径

但是在单元测试期间,它将返回Visual Studios .EXE文件路径而不是我的程序。有没有办法解决?我搜索过,我注意到有人提到要尝试使用像

这样的东西
var execPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);

然后传递那个

Configuration config = ConfigurationManager.OpenExeConfiguration(execPath);

然而,execPath似乎只返回文件夹,而不是程序EXE本身。

感谢

1 个答案:

答案 0 :(得分:0)

根据我的评论:

  

如果您正在谈论"单元测试"你的代码不能的任何原因   隔离依赖项,以便您可以模拟/存根从中返回的内容   配置管理器?单元测试不应该依赖于文件系统中的路径。

只想为此添加更多内容。我知道你在实际代码和单元测试中运行时遇到路径问题。如果你以不同的方式处理这种情况并想到你真正尝试单元测试的话,那么你可能不会遇到你现在遇到的问题。

Web上有很多关于如何为单元测试目的存根/模拟配置和文件路径的示例。但下面的链接可能会帮助您朝着正确的方向发展。

http://chrisondotnet.com/2011/05/configurationmanager-wrapper-for-unit-testing/