我有一个带有xUnit的.NET Framework 4.5.2单元测试项目。在我的单元测试项目中,我有一个App.config
文件,它与我的appSettings
相同Web.config
。
运行测试时,ConfigurationManager.AppSettings[<keyname>]
始终返回null-表示它没有读取App.config
文件。
在bin
目录中,我看到我有一个MyProject.Tests.UnitTests.dll.config
文件,该文件的内容似乎与我的App.config
相同。
这是xUnit的错误吗?我必须进行任何xUnit配置才能使ConfigurationManager
正常工作吗?
答案 0 :(得分:2)
如果您偶然发现了这个问题,那么不幸的是,这可能不是您要找的答案,但是我仅使用NUnit而不是XUnit来解决了这个问题。
为解决此问题,我决定创建一个实现Configuration
接口的IConfiguration
类,并将其注入到我想获取AppSettings的位置。然后,我遇到了另一个问题,我的模拟无法设置,给了我issue。那时我只是放弃并切换,我的测试立即就起作用了。
最终,问题似乎是使用Resharper,XUnit和.NET Framework的组合。
答案 1 :(得分:0)
经过一些研究和实验,我找到了一种方法来使xUnit 满足我的需求。无需创建新的app.config,只需将设置放入 VS构建的.config文件中,该文件即是VS构建在我的bin \ debug文件夹中,对我来说它称为 MyDLL。 \ bin \ Debug \ net472 \ MyDLL.Tests.dll.config 。很简单,它立即开始工作。
详细信息: 我在最后一个标记之前添加了此部分以进行设置。
<appSettings>
<add key="ExpireMins" value="5" />
</appSettings>
更新: 更好,我在VS2017中找到了一种完成上述操作的方法:
注意:出于某种原因,以上内容对我第一次无效。所使用的名称“ App.config”和项目(测试)都可能是至关重要的(?)。
答案 2 :(得分:0)
对我来说,问题似乎可以通过将测试项目从.NET Framework 4.5升级到4.5.2。来解决。
问题似乎与此有关: Running xunit.net tests in VSTS
如果您遵循这种方法,请注意其他注意事项,例如Console.WriteLine()
在xUnit 2.x中不起作用:
Using ReSharper, how to show debug output during a long-running unit test?