【发布时间】:2013-08-28 16:32:41
【问题描述】:
我有一个带有自己的app.config 文件的单元测试项目,该文件是由正在测试的目标项目定义的真实配置文件的模拟。这个模拟文件由单元测试代码(而不是目标项目)加载和处理,如果我只在这个测试项目中运行测试,它可以正常工作。
ConfigurationManager.GetSection(sectionName)
但是,如果我从多个测试项目运行测试,并且其他测试项目在相关项目之前执行,则上述语句返回null。如果讨论的测试项目首先执行,加载配置文件没有问题。
如何修复在单元测试中加载配置文件以正常工作?
【问题讨论】:
-
我每次运行测试项目时都会遇到与测试项目和 Sqlite 类似的问题,会创建一个新的 Sqlite 数据库,而主项目没有发生这种情况,所以为了测试我必须创建普通控制台application 而不是测试项目。我不知道这些信息是否有帮助 某些案例测试项目不是那么好 尤其是在处理外部资源时 更奇怪的是,我在使用 Visual 2010 时遇到了这个问题,但是当我升级到 2012 时,一切正常很好!!!
-
我认为你只能有一个活动的配置文件,第一个是用于所有项目的,当你有正常的项目时,这是完成的,但在测试项目中它不是,所以复制(合并)所有项目的网络配置,看看它是否有效。
-
所以你在一个单元测试项目中有一个app.config,而其他单元测试项目都依赖于那个app.config?这不是很可持续。我建议要么将该模拟 app.config 复制到每个测试项目,要么使用下面@Ouarzy 的模拟建议。它还取决于您要测试的内容:ConfigurationManager.GetSection() 调用或其他。
标签: c# .net configuration nunit configurationmanager