基类没有找到应用程序设置

时间:2014-12-30 18:07:38

标签: c# testing nunit

这是一个普遍的问题,但我没有通过谷歌搜索找到它。我有一个测试框架,可以为测试目的设置环境。我的应用程序通过引用路径使用此框架并运行手动测试。但是,一旦我要求构建服务器运行我的测试,框架就会抱怨它无法找到我的任何应用程序设置。 app.config文件位于我的应用程序的测试项目中,我确信它存在于构建服务器上的正确bin文件夹中。我是在C#.NET环境中这样做的。

修改

我不确定该更具体。我认为它与构建服务器有关,因为它似乎在本地运行测试,但我不知道该看什么。关于构建服务器的其他任何内容都没有失败,只需获取应用程序设置。

框架是.NET 4.0,而主项目是4.5。我正在使用nunit运行测试并在构建过程之外运行它们,但使用Nunit gui在同一点失败。

抓取应用设置的代码非常基本:

string databaseName = ConfigurationManager.AppSettings["databaseName"];

修改

我测试的片段:

public class UserServiceTests : DeployDBEveryFixtureBase
    {
        public UserServiceTests()
        {
            DBSetup("Core");
            DBSetup("Postal");
            DBSetup("Common");
        }

        private UserService userService = new UserService(string.Format("Data Source={0};Initial Catalog={1};User ID={2};Password={3};",
            ConfigurationManager.AppSettings["targetServer"],
            ConfigurationManager.AppSettings["databaseName"],
            ConfigurationManager.AppSettings["userID"],
            ConfigurationManager.AppSettings["password"]));

        [Test]
        public void UserService_Get()
        {
            // Act
            User user = userService.GetUser(Guid.Empty, "*****", string.Empty);

            // Assert
            Assert.IsTrue(user.FirstName == "System");
        }
    }

环境部署位于DeployDBEveryFixtureBase的基类中。 DBSetup调用确保以正确的顺序部署每个数据库。所有这些似乎运行正常,我的测试完成但我仍然得到描述的错误。如果我查看数据库,我可以正确部署所有数据库然后删除(基类包括TestFixtureTearDown),但似乎构建过程正在尝试再次运行它。

注意:我只是在此过程中构建解决方案文件。我目前在构建中没有.proj文件。

2 个答案:

答案 0 :(得分:0)

如果不了解您的构建服务器或者您是如何运行测试的,那么只会出现一个问题,即Shadow Copying。你能检查你的单元测试的DLL是不是被影子复制到app.config文件不存在的某个位置吗?

答案 1 :(得分:0)

显然我的测试框架有一个空的构造函数,它不是那么空。看起来app.config正在被正确查询但是返回一个空结果集,因为空构造函数没有正确的参数。删除空构造函数的内容后,我的测试运行正常。谢谢大家的帮助。