应用TDD /单元测试进行配置转换?

Loc*_*eCJ 1 asp.net tdd web-config tfsbuild

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

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

扩展这个想法,能够指定应该进行转换的基本配置中的某些项目,以捕获转换尚未添加到环境配置的不可避免的情况,这将是很好的.

abo*_*021 6

我最终使用了以下流程:

创建一个指向 web.config 的链接,并从visual studio中的测试项目转换文件.
将文件属性更改为"如果更新则复制".
添加对Microsoft Xml文档转换的nuget引用

Install-Package Microsoft.Web.Xdt -Pre
Run Code Online (Sandbox Code Playgroud)

您现在应该能够将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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经针对我们的TeamCity构建服务器测试了这种方法,它运行正常.另外,它也适用于NCrunch.

如果你想在web.config上进行手动检查,那么转换SlowCheetah - XML Transforms扩展非常方便.