Ste*_*idi 13 .net nunit unit-testing configurationmanager app-config
如果程序集包含app.config文件,ConfigurationManager只要它与通过NUnit-Gui执行的NUnit项目位于同一目录中,就会加载它.为了说明考虑以下文件夹结构.
+ TestFolder
testProject.nunit
+ AssemblyAFolder
assemblyA.dll
assemblyA.dll.config
+ AssemblyBFolder
assemblyB.dll
assemblyB.dll.config
Run Code Online (Sandbox Code Playgroud)
两者AssemblyA和AssemblyB锻炼代码调用ConfigurationManager.如果我在NUnit-Gui中独立运行这些测试程序集,ConfigurationManager将正确解析本地配置文件.
然而,如果我加载testProject.nunit到NUnit的桂(其包含两者的引用AssemblyA和AssemblyB),ConfigurationManager查找在配置文件TestFolder而不管哪个组件当前正在执行.
有没有办法指示NUnit将应用程序配置重新加载到当前程序集目录中的应用程序配置?
以下是内容testProject.nunit:
<NUnitProject>
<Settings activeconfig="Debug" />
<Config name="Debug" binpathtype="Auto">
<assembly path="AssemblyAFolder\assemblyA.dll" />
<assembly path="AssemblyBFolder\assemblyB.dll" />
</Config>
</NUnitProject>
Run Code Online (Sandbox Code Playgroud)
小智 5
Nunit无法在我们的项目中找到App.config文件的路径.所以我们需要手动告诉Nunit App.config文件放在我们项目中的位置(显然在根文件夹中).
在我的例子中,项目结构如下
+ProjectWEBApp//web pages
+Modules
+aspx pages
+web.Config
+projectBusinesslogic //business logic .cs files
+Modules
+.cs
+ProjectTestName// a seperate Nunit test cases project
+Modules
+App.Config
Run Code Online (Sandbox Code Playgroud)
ProjectWebApp使用包含业务逻辑的projectBusinesslogic的引用.+ ProjectTestName使用projectBusinesslogic的引用来对业务逻辑执行测试.问题从这里开始,Nunit测试项目需要自己的app.config文件.它不会像projectBusinesslogic一样使用web.config文件,所以当你运行Nunit时它会提示错误
-Null参考异常.......对象瞬间未设置为...........
解决方案 - 运行Nunit GUI时
这是解决问题的简单方法
小智 2
NUnit 博客解释了为什么配置文件会这样加载。基本上他们所说的是 NUnit 让框架处理配置文件,但不进行任何管理。
您还可以使用testProject.config在您的案例中加载的文件来引用每个程序集的配置文件。使用 appSettings 文件属性添加密钥。
最后一种替代方法是使用configSource元素属性来使用程序集配置文件之一中的部分。
希望这可以帮助。