【问题标题】:Base class not finding app settings基类未找到应用程序设置
【发布时间】:2014-12-31 05:25:28
【问题描述】:

这是一个一般性的问题,但我没有通过谷歌搜索找到太多。我有一个测试框架,它为测试目的设置了一个环境。我的应用程序通过引用路径使用这个框架并运行手动测试就好了。但是,一旦我要求构建服务器运行我的测试,框架就会抱怨它找不到我的任何应用程序设置。 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 文件。

【问题讨论】:

  • 这种方式更广泛,更具体。问题可能出在您的系统或构建服务器中
  • 您能否在构建服务器上添加一些跟踪或类似的东西,以确保代码在 app.config 附近的正确目录中执行?
  • 为了快速检查,请将您的测试 app.config 文件放在您拥有测试项目的 NUnit 程序集文件的同一文件夹中,并尝试在 GUI 上测试 NUnit。
  • 这一定是我们构建过程的问题。我可以看到正在设置和拆除的环境,它使用应用程序设置,但是当 app.config 文件不再存在时,必须重新运行测试。

标签: c# testing nunit


【解决方案1】:

如果不了解您的构建服务器或您如何准确地运行测试,只会想到一个问题,那就是影子复制。您能否检查您的单元测试 DLL 是否没有被影子复制到 app.config 文件不存在的某个位置?

【讨论】:

  • 我已经检查并再次检查,但注册表设置为非卷影复制。
  • 感谢分享,你能分享你的配置文件的 sn-p 和失败的单元测试吗?只是这样我们可以更有帮助:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多