Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行NUnit测试(TD.NET)时配置文件错误_C#_Unit Testing_Nunit_Testdriven.net - Fatal编程技术网

C# 运行NUnit测试(TD.NET)时配置文件错误

C# 运行NUnit测试(TD.NET)时配置文件错误,c#,unit-testing,nunit,testdriven.net,C#,Unit Testing,Nunit,Testdriven.net,我有一个从标准.NET配置(app.config)文件中读取一些配置的组件 当我为这个组件运行单元测试(NUnit)(使用TD.NET)时,我注意到配置文件没有被读取 检查AppDomain.CurrentDomain.SetupInformation.ConfigurationFile 我注意到它的值被设置为C:\Users\ltal\AppData\Local\Temp\tmp6D2F.tmp(一些临时随机位置) 发生这种情况有什么原因吗?(这是NUnit还是TD.NET的错?) 我想为了测

我有一个从标准.NET配置(app.config)文件中读取一些配置的组件

当我为这个组件运行单元测试(NUnit)(使用TD.NET)时,我注意到配置文件没有被读取

检查
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

我注意到它的值被设置为C:\Users\ltal\AppData\Local\Temp\tmp6D2F.tmp(一些临时随机位置)

发生这种情况有什么原因吗?(这是NUnit还是TD.NET的错?)


我想为了测试,我可以自己设置这个SetupInformation对象,但还没有尝试过,但仍然想知道为什么它是这样创建的,而不是默认的。

默认情况下,.NET运行时在
AppDomain
的工作目录中查找,该目录由NUnit在临时位置管理

此链接提供了两种有关如何获取配置文件的解决方案:

基本上,他们需要生活在测试目录中。

  • 要解决此问题,可以在单元测试项目中创建app.config。然后,您的单元测试将调用它来代替主app.config。然后,您可以在单元测试中更改该app.config中的值,从而更容易测试不同的值和配置,即,您可以在运行测试之前使用某些值设置测试app.config

    ConfigurationManager.AppSettings[“”]=“”

  • 另一个选项可能是将设置放置在主项目的settings.setting文件中。您不必在单元测试项目中更改任何内容。一些关于设置和app.config之间差异的链接-

  • 当然,第三种选择是通过引入接口从组件中删除对app.config的依赖关系,并将依赖关系注入到组件中,以便于模拟和单元测试


设置和配置之间有什么区别?你有关于这个的链接吗?你应该去哪里?设置文件保存到C:\Documents and Settings下的某个位置,通常用于您希望在运行时更改的特定于用户的设置(如背景色),并可能用于持久化应用程序升级。我通常会在App.Config文件中存储连接字符串之类的内容。编辑以包含链接。