2

AppHarborのドキュメントには、構成変換がWebサイトとバックグラウンドワーカーの構成ファイルの両方に適用されると記載されています。ただし、テスト環境用のapp.config変換を必要とする、実行不可能でデプロイ不可能な統合テストプロジェクトがあります。

これまでのところ、次のファイル構造では成功していません。AppHarborは、テスト実行ビルドステップ中のDLLプロジェクトでの構成変換をサポートしていないと推測しています。

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

これが可能かどうか誰かが知っていますか?

4

2 に答える 2

2

ライブラリプロジェクト(dll)の構成を変換しても意味がありません。アプリケーションは、exeのapp.configまたはWebアプリケーションのweb.configを使用します。

したがって、関連する構成設定をdll構成からexe/web構成変換にコピーする必要があります。

アップデート

これはテストを実行するためのものなので、別のアプローチをお勧めします。依存関係としてそれらを注入します。このトピックに関する優れた投稿については、構成設定が注入されるべき依存関係であるを参照してください。

これが私の考えを変えた意見の抜粋です:

では、なぜ単体テストプロジェクトに構成設定を追加するのがハックなのですか?そうですね、web.configとapp.configは他のファイルと同じです。したがって、クラス内の構成設定を参照するということは、そのクラスがファイルシステムに直接依存していることを意味します。ユニットテストでマイドキュメントのファイルを開いたり、インターネットからWebページをダウンロードしたりすると、それほど快適に感じることはないでしょう。では、なぜそれがweb.configにアクセスできると人々が考えるのでしょうか。

于 2012-07-06T14:43:10.033 に答える
0

統合テストにアプリハーバーの構成値を使用したかったのです。アプリハーバーに正しい構成設定を挿入させることで動作させることができませんでしたが、近づきました。

Webプロジェクトに統合テストが含まれているため、app.configをWebプロジェクトに追加しました。

app.configに環境アプリの設定を追加しました。

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

そのコードがアプリに実行されたとき、環境値がTest: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は、統合テスト時に使用したい値です。

于 2013-09-14T07:13:37.147 に答える