Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 对配置转换应用TDD/单元测试?_Asp.net_Web Config_Tdd_Tfsbuild - Fatal编程技术网

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

Asp.net 对配置转换应用TDD/单元测试?,asp.net,web-config,tdd,tfsbuild,Asp.net,Web Config,Tdd,Tfsbuild,是否有人知道可以应用于有效单元测试配置转换的任何技术或框架,特别是在构建服务器上 例如,如果我在基本配置中添加了一个新的连接字符串,有没有办法编写一个自动测试来确保正确的值应用于QA和产品配置 在这个想法的基础上,如果能够在基本配置中指定某些应该有转换的项,以捕捉那些转换没有添加到环境配置中的不可避免的情况,那将是一件好事。这可能不是我想要的,但我确实偶然发现,这似乎为验证配置文件中的值提供了一种相当合理的机制。有关详细信息,请参阅博文。它不与构建服务器集成,但提供了一种方便的方法来生成转换结果

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

例如,如果我在基本配置中添加了一个新的连接字符串,有没有办法编写一个自动测试来确保正确的值应用于QA和产品配置


在这个想法的基础上,如果能够在基本配置中指定某些应该有转换的项,以捕捉那些转换没有添加到环境配置中的不可避免的情况,那将是一件好事。

这可能不是我想要的,但我确实偶然发现,这似乎为验证配置文件中的值提供了一种相当合理的机制。有关详细信息,请参阅博文。

它不与构建服务器集成,但提供了一种方便的方法来生成转换结果,并确保它们符合您的要求

通过


还可以选择使用microsoft.web.xdt nuget包滚动您自己的解决方案。以下是。

我最终使用了以下流程:

转到web.config并在visual studio中转换测试项目中的文件。
将文件属性更改为“更新时复制”。
将nuget引用添加到

您现在应该能够将web.config及其转换加载到单元测试中,类似于下面的测试:
注意:我正在使用和进行此测试

[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有什么方法可以验证转换后的配置中是否存在特定的值。例如,如果从web.debug.config中删除转换,则只会使用web.config中的值。
[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);
    }
}