4

構成ファイルに依存するいくつかの単体テストを作成しました。これは、テスト プロジェクトfile.configのディレクトリにデプロイされます。bin\Debugただし、テストが実際に行われる出力テスト結果ディレクトリにコピーされないようです。

私はこれらを検索して見つけました:
TFS UnitTesting not deploying local copy assembly to test dir when on build server
Test project and config file

最初のリンクにより、構成ファイルをテスト プロジェクトのディレクトリにデプロイする方法を見つけることができましたbin\Debug

2番目は実用的な解決策を示していますが、テストするクラスを自分で追加することなどは言うまでもなく、私のニーズには少しやり過ぎだと思います。テスト結果ディレクトリに自動的にコピーされます。

編集#1

私は使用しています:

  1. Microsoft Enterprise Library 4.1 とその名前付き接続。と
  2. Microsoft Visual Studio 2008; そしてその
  3. マイクロソフト ユニットテスト フレームワーク。

私の設定ファイルは次のようになります。

<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </configSections>
  <dataConfiguration defaultDatabase="Tests" />
  <connectionStrings>
    <add name="Tests" connectionString="Database=Tests;Server=(local)\SQLEXPRESS;Integrated Security=SSPI"
        providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

と名前が付けられます: Tests.config.

DefaultSourceこれで、デフォルトのソース名、つまり接続とデータベース オブジェクトを作成するためのパラメータを含むプロジェクト設定ができました。この設定の値はTestsです。

したがって、新しい接続を作成するときは、次のようにします。

public static IDbConnection CreateConnection(string source) {
    return new DatabaseProviderFactory(new FileConfigurationSource(
            string.Format("{0}\{1}.config", AppDomain.CurrentDomain.BaseDirectory, source)
        ).CreateDefault().CreateConnection();
}

AppDomain.CurrentDomain.Basedirectory現在、返される値のために、単体テスト中に正しく機能しないのはこれです。このプロパティはアセンブリ ビルド ディレクトリbin\DebugではなくTestResults[auto-generated-test-results-directory]、テストが実際に実行される場所を返すためです。

だから、私のテストで私がするとき:

[TestMethod()]
public void Connection_InitializationWithSourceName() {
    using connection as IConnection = ConnectionProviderFactory.CreateConnection(DefaultSource) {
        // Asserts here... 
    } 
}

where DefaultSourceproperty は、値が であるデフォルトのソース設定パラメーターを返しますTests。そのため、前述のように、FileConfigurationSourceオブジェクト クラスはTests.config、テストが実際に実行されるテスト結果ディレクトリで呼び出されるファイルを検索します。

それを行う方法のアイデアはありますか?

ありがとう!=)

4

2 に答える 2

5

プロジェクトにビルド後のイベントを追加して、ファイルを好きな場所にコピーしてみませんか?

于 2011-03-13T15:21:24.060 に答える
4

必要なすべてのテストに [DeploymentItem] 属性を追加すると、必要なファイルが out フォルダーにデプロイされます。 http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=vs.80).aspx

次のように使用できます。

[DeploymentItem("resources/my-file.ini")]
[TestMethod()]
public void Connection_InitializationWithSourceName() {

または、そのクラスのすべてのテストで必要な場合は、クラスに配置できます。

于 2012-01-18T13:34:47.463 に答える