asp.net - 对配置转换应用 TDD/单元测试?

标签 asp.net web-config tdd tfsbuild

有谁知道可以应用于有效单元测试配置转换的任何技术或框架,尤其是在构建服务器上?

例如,如果我向基本配置添加一个新的连接字符串,是否有任何方法可以编写自动化测试以确保将正确的值应用于 QA 和产品配置?

扩展这个想法,如果能够在基础配置中指定某些应该有转换的项目,以捕捉那些转换没有被添加到环境配置中的不可避免的情况,那就太好了。

最佳答案

我最终使用了以下流程:

Create a link到您的 web.config 并从您在 visual studio 中的测试项目转换文件。
将文件属性更改为“如果更新则复制”。
添加对 Microsoft Xml Document Transformation 的 nuget 引用

Install-Package Microsoft.Web.Xdt -Pre

您现在应该能够加载 web.config 并将其转换为单元测试,如下所示:
注意:我正在使用 NUnitFluent Assertions对于这个测试。

[Test]
public void Transform_WhenUsingAlpha_ConnectionStringShouldPointToAlpha()
{
    using (var webConfig = LoadWebConfig())
    {
        var transformWasSuccessful = DoXmlTransform(webConfig, "Web.Alpha.config");
        var connectionString = 
            webConfig.SelectNodes(
            "//connectionStrings/add[@name='ApplicationServices']/@connectionString")[0].Value;

        transformWasSuccessful.Should().BeTrue();
        connectionString.Should().Contain("_Alpha");
    }
}

public XmlTransformableDocument LoadWebConfig()
{
    var document = new XmlTransformableDocument();
    document.PreserveWhitespace = true;
    document.Load("web.config");
    return document;
}

private bool DoXmlTransform(XmlTransformableDocument webConfig, string transformFile)
{
    using (var transform = new XmlTransformation(transformFile))
    {
        return transform.Apply(webConfig);
    }
}

我已经针对我们的 TeamCity 构建服务器测试了这种方法,它运行良好。附带说明一下,它也适用于 NCrunch。

如果您想对 web.config 进行手动检查,请转换 SlowCheetah - XML Transforms extension非常方便。

关于asp.net - 对配置转换应用 TDD/单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15817157/

相关文章:

c# - web.config 文件在 C# 中如何工作?

iis - 有没有办法在 web.config 中配置应用程序池的 "Idle timeout"?

.net - 通过 web.config 对 WCF 服务的 Unity 依赖注入(inject)

javascript - OnClick事件调用javascript函数语法

c# - 如何使用 C# 在用户控制页面中获取父页面名称

drupal - Drupal 7 上的 PHPunit

unit-testing - 不依赖实现细节的测试

node.js - 使用Jasmine的spyOn/andReturn来模拟fs.readFileSync()

asp.net - 如何将服务器控件的实际客户端 ID 传递给 javascript 函数?

c# - 这是处理sql连接的好方法吗?