2

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

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

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

4

3 回答 3

7

我最终使用了以下过程:

在 Visual Studio 中创建一个指向您的 web.config 的链接并转换您的测试项目中的文件。
将文件属性更改为“如果较新则复制”。添加对Microsoft Xml 文档转换
的 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 转换扩展非常方便。

于 2013-07-02T23:47:43.947 回答
1

它不与您的构建服务器集成,但SlowCheetah XML 转换扩展为您提供了一种方便的方法来生成转换结果并确保它们是您想要的。

SlowCheetah 也可作为 NuGet 包使用

通过斯科特汉塞尔曼

还可以选择使用 microsoft.web.xdt nuget 包滚动您自己的解决方案。下面是如何从代码中调用 XDT

于 2013-06-19T03:48:42.987 回答
0

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

于 2013-05-14T20:31:13.330 回答