代码之家  ›  专栏  ›  技术社区  ›  Kelsey

如何测试所有预期的web.config设置都已定义?

  •  1
  • Kelsey  · 技术社区  · 15 年前

    我在VS2008中使用内置测试框架,我希望能够编写一个测试,确保所有预期的web.config设置都已定义,以便在意外情况下删除或更改一个设置时,我的测试套件将检测到它,而不必在运行时场景中进行测试。我该如何设置?

    我不想设置web.config的模型,因为我不想维护两个版本,这会使我的测试无论如何都无效,因为我真的试图捕获项目的web.config是正确的。

    有什么建议,备选方案,提示吗?

    解决方案: 我最终使用了预构建中的副本,这是一个更改建议的结果。在复制时,我将web.config重命名为app.config,以便测试项目自动获取它。

    我也尝试按照建议分割配置文件,但我遇到的问题是,当测试项目运行时,它实际上并没有从bin目录(将配置文件设置为“content”类型将复制到)中运行,而是运行到一个预先定义的结果目录中。我不知道如何让它把额外的文件复制到这个结果目录,这样就永远找不到配置文件。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Community CDub    7 年前

    我正在使用预生成事件将工作web.config复制到测试项目目录。

    将测试项目的预生成事件的命令行设置为如下字符串:

    copy $(SolutionDir)\YourWebAppDir\web.config $(ProjectDir) /y
    

    之后,您的测试将始终使用实际的web.config版本运行。

    评论 pcampbell's answer :

    我想如果你用 configSource 属性您可以在Web应用程序的web.config和测试项目的app.config中将其设置为相同的路径,这样就不需要使用生成事件。

    对不起,我还不能发表评论。

        2
  •  2
  •   Community CDub    7 年前

    展开 bniwredyc's answer ,可能考虑:

    • 重构您的 web.config 引用新的配置文件 appSettings.config 或类似的。

    • 修改项目的 Web.CONFIG 到:

      <appSettings configSource="appSettings.config" />

    • 修改单元测试项目的app.config以使用此文件。

    • 修改发布或预生成事件以仅复制此文件。

    • 这也有助于简化测试/分段/生产中的部署。

        3
  •  0
  •   Joseph Ferris    15 年前

    最终,web.config是一个XML文件。您可以生成一个模式来验证所需的部分是否存在以及所需的值是否已填充。显然,您不能在上下文中验证配置可能包含的任何类型的业务逻辑,但是您可以使用XSD验证和用于解析文件中条件的轻量级类的组合。

    与复制预构建事件结合使用,实际上可以为生产质量配置创建非常好的测试工具。