如何在 NUnit 中初始化 ConnectionStrings 集合

5
我想使用NUnit测试ASP.NET应用程序,但是当从NUnit GUI运行时,WebConfigurationManager.ConnectionStrings集合似乎为空。
请问如何初始化此集合(可能在[TestFixture]的[SetUp]函数中)?我应该将Web.config复制到哪里?
谢谢!
3个回答

9

NUnit .config文件的位置取决于您如何创建NUnit项目文件

与其他帖子所建议的有点不同,NUnit测试的.config文件的位置比较复杂。在NUnit GUI Project/Edit对话框中有此设置。默认值都取决于您如何创建NUnit项目文件。

当您打开NUnit GUI并选择File/Open,然后选择.dll文件时,会设置一个新的项目,并使用相同名称的.config文件查找位于同一目录中的dll文件。因此,如果您加载\bin\debug\MyTests.dll,默认情况下NUnit将查找\bin\Debug\MyTests.dll.config。唯一的问题是,当您创建发布版构建时,需要创建单独的NUnit项目。

如果您通过选择File/NewProject来创建NUnit项目,则默认设置是查找与NUnit项目同名的配置文件。所以,如果您创建了\MyNUnitProject.nunit,NUnit将默认查找\MyNUnitProject.config

您有可能已经使用Visual Studio创建了一个\App.config文件,并将其放入测试dll的源文件夹中。当您构建测试项目时,该文件将被复制到\bin\Debug\MyTests.dll.config\bin\Release\MyTests.dll.config,具体取决于所选的配置。如果您直接在NUnit中打开MyTest.dll,那么这将正常工作。但是,如果您创建了新的NUnit项目,则会遇到问题,因为它不会默认查找这些文件。

要解决此问题,您需要在NUnit GUI中打开Project/Edit对话框,并检查您是否有两个配置Debug和Release,以匹配您的 .Net 项目。完成后,可以选择Debug Configuration并将ApplicationBase设置为bin\Debug\,将Configuration File Name设置为MyTests.dll.config。对于Release配置也要做同样的设置,然后就可以了。


7
如果您的单元测试程序集名称为Company.Component.Tests.dll,则请确保Company.Component.Tests.dll.config文件中有正确的连接字符串。
此外,最好将连接提供程序类与配置解耦,以便在持久性方面具有灵活性(即:从.config切换到其他内容)并更容易进行测试。
还可以查看“如何NUnit找到配置文件”(链接在此:http://nunit.com/blogs/?p=9)。

当我点击那个链接:“NUnit如何查找配置文件”时,我从Web服务器收到了一个错误信息:“建立数据库连接错误”。这有点具有讽刺意味/有趣,因为它与这个问题的背景相矛盾。=P - JMarsch

1

你可以使用 app.config 文件来管理库文件(我假设你的测试文件就在其中),并将它们放在里面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接