gpt4 book ai didi

c# - ConfigurationManager.GetSection(sectionName) 在执行单元测试时返回 null

转载 作者:太空狗 更新时间:2023-10-29 21:09:22 29 4
gpt4 key购买 nike

我有一个单元测试项目,它有自己的 app.config 文件,它是对被测试的目标项目定义的真实配置文件的模拟。这个模拟文件由单元测试代码(而不是目标项目)加载和处理,如果我只在这个测试项目中运行测试,它就能正常工作。

ConfigurationManager.GetSection(sectionName)

但是,如果我从多个测试项目运行测试,并且其他测试项目在相关项目之前执行,则上述语句返回 null。如果按照讨论的测试项目先进行,加载配置文件是没有问题的。

如何修复单元测试中配置文件的加载以使其正常工作?

最佳答案

您的问题不是 ConfigurationManager.GetSection(sectionName) 返回 null,而是我如何测试包含 ConfigurationManager.GetSection(sectionName) 的一些代码?

答案是:包装它,注入(inject)它,然后为您的测试模拟它。

你有几个人面临同样问题的例子:

(第二个更详细,思路还是一样)。

无论如何,您不能在单元测试中使用来自 app.config 的信息,这是非常合乎逻辑的,因为 app.config 是整个应用程序的上下文,当需要编写绝对独立的测试时。如果直接使用 app.config 值,则存在非逻辑耦合。

关于c# - ConfigurationManager.GetSection(sectionName) 在执行单元测试时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18439834/

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