0

現在、2 つのプロジェクトがあります。1 つは標準の ASMX Web サービスで、もう 1 つはテスト プロジェクトです。Web サービス プロジェクトにはWeb.config、接続文字列を含むファイルがあります。接続文字列を qa または production に変更する方法を認識しています。私の問題は、テスト プロジェクトの接続文字列を変更する方法がわからないことです。私が望むのは、テストに SQLite を使用することです。

これは、tests .csproj ファイルに追加したターゲット ファイルの外観です。

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ConnectionString>Data Source=:memory:</ConnectionString>   
    </PropertyGroup>

    <Target Name="BeforeBuild"
        DependsOnTargets="Clean" />

    <Target Name="AfterBuild"
        DependsOnTargets="UpdateConfigFileForEnvironment" />

    <Target Name="UpdateConfigFileForEnvironment">
        <PropertyGroup>
            <AppConfigFileName>$(OutDir)Web.config</AppConfigFileName>
        </PropertyGroup>

        <FileUpdate
            Files="$(AppConfigFileName)"
            Encoding="ASCII"
            Regex="ConnectionStringBuild"
            ReplacementText="$(ConnectionString)" />
    </Target>
</Project>

そしてWeb.config、これが Web サービス プロジェクトのファイルです。内容は関係ないので割愛します。

  <appSettings>
    <add key="ConnectionString" value="ConnectionStringBuild" />
  </appSettings>

VS2008 で ReSharper を介して単体テストを実行すると、AppSettingsエントリConnectionStringが何も返されないという問題が発生します。また、msbuildテスト プロジェクトのコマンド ラインで実行すると、接続文字列が正常に更新されます。

テストの実行時に接続文字列を変更するにはどうすればよいですか?

4

1 に答える 1

3

依存関係として接続文字列を渡すような方法でデータ アクセス クラスを構築する必要があります ( Paul Hiles による構成設定は依存関係を参照してください)。

これにより、構成内のものとは異なる接続文字列をテスト コードに渡すことができます。

于 2012-05-01T18:32:01.620 に答える