是否可以为AppHarbor测试项目应用配置转换?

时间:2012-07-06 13:36:11

标签: .net appharbor

AppHarbor文档中指出,配置转换适用于网站和后台工作者配置文件。但是,我有一个不可执行的,不可部署的集成测试项目,需要对测试环境进行app.config转换。

到目前为止,我对以下文件结构没有任何成功,我猜测AppHarbor在测试执行构建步骤期间不支持DLL项目的配置转换:

Specs.proj
+
+-- Specs.dll.config
    +
    +-- Specs.dll.Debug.config
    +
    +-- Specs.dll.Test.config

有人知道这是否可行吗?

2 个答案:

答案 0 :(得分:2)

为库项目(dll)转换配置是没有意义的。您的应用程序将使用您的web应用程序的exe或web.config的app.config。

因此,您需要将dll配置中的相关配置设置复制到exe / web配置转换中。

<强>更新

由于这是用于运行测试,我建议采用不同的方法:将它们作为依赖项注入。有关此主题的精彩帖子,请参阅Configuration Settings Are A Dependency That Should Be Injected

这是一个自以为是的摘录改变了我的想法:

  

那么为什么要将配置设置添加到单元测试项目中呢?   好吧,web.config和app.config就像其他文件一样。所以   在类中引用配置设置意味着那样   class直接依赖于文件系统。你不会这样   舒服(我希望)如果您的单元测试在My中打开了一个文件   文件,或从互联网上下载的网页,为什么呢   人们认为访问web.config是可以接受的吗?

答案 1 :(得分:0)

我想使用app ports配置值进行集成测试。我没有能够让app Harbor注入正确的配置设置,但我已经接近了。

我在我的web项目中添加了一个app.config,因为我的web项目中包含了我的集成测试。

我将环境应用设置添加到app.config:

<appSettings>
    <add key="Environment" value="localconfig"/>

我注意到该代码在app harbour上运行时,环境值测试:27017

我写了这段代码:

private static string GetMongoDbConnectionString()
{
    string con = ConfigurationManager.AppSettings.Get("MONGOHQ_URL") ??
                ConfigurationManager.AppSettings.Get("MONGOLAB_URI");
    string env = ConfigurationManager.AppSettings.Get("Environment");
    if (env.StartsWith("Test", StringComparison.OrdinalIgnoreCase))
    {
        con = "mongodb://xxxxxxxxx";
    }
    return con;
}

xxxxxxxxx是我想在集成测试时使用的值。

相关问题