DeploymentItemAttribute クラス

テスト実行前のアセンブリとともに配置する必要があるディレクトリまたはファイルを指定します。テスト クラスとテスト メソッドにこの属性をアタッチします。複数のインスタンスを使用できます。この属性は継承されません。

継承階層

System.Object
  System.Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute

名前空間:  Microsoft.VisualStudio.TestTools.UnitTesting
アセンブリ:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 内)

構文

'宣言
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
    Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
public sealed class DeploymentItemAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple = true)]
public ref class DeploymentItemAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)>]
type DeploymentItemAttribute =  
    class
        inherit Attribute
    end
public final class DeploymentItemAttribute extends Attribute

DeploymentItemAttribute 型で公開されるメンバーは以下のとおりです。

コンストラクター

  名前 説明
パブリック メソッド DeploymentItemAttribute(String) 項目を配置する前にテストの実行を開始指定します。
パブリック メソッド DeploymentItemAttribute(String, String) 項目を配置する前にテストの実行を開始指定します。

このページのトップへ

プロパティ

  名前 説明
パブリック プロパティ OutputDirectory 項目がコピー ディレクトリのパスを取得します。
パブリック プロパティ Path コピーされるソース ファイルまたはフォルダーのパスを取得します。
パブリック プロパティ TypeId 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。 (Attribute から継承されます。)

このページのトップへ

メソッド

  名前 説明
パブリック メソッド Equals インフラストラクチャ。このインスタンスが、指定したオブジェクトに等しいかどうかを示す値を返します。 (Attribute から継承されます。)
パブリック メソッド GetHashCode 対象のインスタンスのハッシュ コードを返します。 (Attribute から継承されます。)
パブリック メソッド GetType 現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド IsDefaultAttribute 派生クラス内でオーバーライドされたときに、このインスタンスの値が派生クラスの既定値かどうかを示します。 (Attribute から継承されます。)
パブリック メソッド Match 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。)
パブリック メソッド ToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)

このページのトップへ

明示的インターフェイスの実装

  名前 説明
明示的なインターフェイス実装プライベート メソッド _Attribute.GetIDsOfNames 一連の名前を対応する一連のディスパッチ識別子に割り当てます。 (Attribute から継承されます。)
明示的なインターフェイス実装プライベート メソッド _Attribute.GetTypeInfo オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。 (Attribute から継承されます。)
明示的なインターフェイス実装プライベート メソッド _Attribute.GetTypeInfoCount オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。 (Attribute から継承されます。)
明示的なインターフェイス実装プライベート メソッド _Attribute.Invoke オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。 (Attribute から継承されます。)

このページのトップへ

解説

テストをVisual Studio 2012 は、変更をビルドまたはテストの実行に固有の別の配置のフォルダーまたはフォルダーに移動します。配置フォルダーが使用されている場合、参照するテスト エンジン Deploy フォルダーを作成し、テスト コードは、アプリケーションを含むアセンブリとそのアセンブリはコピーされません。

ただし、テストはテスト データ、構成ファイル、データベース、または明示的に読み込まれたアセンブリなど、追加のファイルが必要です。これらのファイルをテスト時に使用できるようにするには、テスト アセンブリとともにコピーされることを指定する必要があります。この場合の最適な方法を次に示します。:

  1. ビルド プロセスの一部としてビルド ターゲット ディレクトリにファイルをコピーします。

    • これらは 1 個のテスト プロジェクトに固有の、Visual Studio のテスト プロジェクトにコンテンツ ファイルとして追加します。ソリューション エクスプローラーで、を選択し、[新しい場合はコピーする][Copy to Output] のプロパティを設定します。

    • それ以外の場合、ビルド出力ディレクトリにファイルをコピー ビルド後のタスクを定義します。次に例を示します。

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      テスト プロジェクトのプロパティを開きます。、C のプロジェクトでは、[ビルド イベント] のページを開きます。Visual Basic プロジェクトでは、[コンパイル] のページを開き、[ビルド イベント] を選択します。[ビルド後のイベント] のフィールドにコピー コマンドを追加します。

  2. ビルド出力ディレクトリから配置のディレクトリにコピーする必要があるフォルダーとファイルを指定するには、テスト メソッドまたはテスト クラスの DeploymentItemAttribute を使用します。

  3. ビルドで単体テストを直接実行するディレクトリを、テストより迅速に出力するからです。これは、テストをチェックインすると、ビルド サーバーで特に役立ちます。これを行うには、[.runsettings] ファイルをソリューションに追加し、<DeploymentEnabled>False</DeploymentEnabled>を含むファイル [テスト] に選択するには、メニューのを [テストの設定]。同じ効果を DeploymentItemAttribute がまったく使用されていない任意のテストの実行で実行されます。

    ただし、失敗した実行の後にデータ ファイルを検査できるようにするには、これを実行しないようにすることもあります。

    ネットワークに接続してロード テスト、コードされた UI テスト、.testsettings ファイルを使用して配置フォルダーの使用を避けることができないため、必要な、リモート コンピューターにアプリケーションを配置するテスト。

テストの実行で、実行するテストのすべての項目がいずれかのテストが開始される前に配置されます。

詳細については、「方法: テスト用のファイルを配置する」を参照してください。

DeploymentItemAttribute に 2 個のパラメーターがあります:

  • ソースの項目のパス がビルド出力フォルダーに関連しています。これは、ファイルまたはフォルダーのいずれかです。プロジェクトの構造の依存関係を回避するには、ビルド プロセスの一部としてビルド出力ディレクトリに項目を移動します。そこから配置に配置項目の属性を使用します。

  • (省略可能) ターゲット ディレクトリのパス は、フォルダーであることが必要で、配置のディレクトリを基準にします。フォルダーが存在しない場合は作成されます。既定値は配置のディレクトリです。

    DeploymentItem を使用してファイル名を変更できません。

次の例では DeploymentItemAttributeの使用を示します:

  • [DeploymentItem("file1.xml")]
    ビルド出力ディレクトリから配置ディレクトリに file1.xml をコピーします。

  • [DeploymentItem(@"Testfiles\")]
    すべてのファイルをコピーし、ビルド フォルダーをから配置フォルダーに Testfiles フォルダーのフォルダーが出力されます。サブフォルダーは配置フォルダーにレプリケートされます。

  • [DeploymentItem("file2.xml", "DataFiles")]
    配置フォルダーで DataFiles という名前のフォルダーを作成してビルド出力フォルダーからデータファイルに file2.xml をコピーします。

    [!メモ]

    2 番目のパラメーターを使用する場合は、フォルダー、ファイル パスであることが必要です。フォルダーが存在しない場合は作成されます。DeploymentItem を使用してファイル名を変更できません。

  • [DeploymentItem(@"Resources\file2.xml", "DataFiles")]
    あるフォルダーに配置 DataFiles という名前のフォルダーを作成します。リソース フォルダーのデータファイルにビルド出力フォルダーの下に file2.xml をコピーします。リソース フォルダーがコピー先のフォルダーにレプリケートことに注意してください。

  • [DeploymentItem(@"TestFiles\", "TestFiles")]
    配置フォルダーのサブフォルダーに TestFiles の内容をコピーします。サブフォルダーがターゲットの下にレプリケートされます。

  • [DeploymentItem(@"..\..\file1.xml")] (推奨できません)
    プロジェクト ディレクトリから項目をコピーします。この例では、出力ディレクトリが bin\Debug など、一般的なプロジェクト構造を前提としています。

    プロジェクト構造にこの方法を使用する代わりに、ファイルの [Copy to Output] のプロパティを設定します。ビルド出力ディレクトリからファイルを配置します。

  • [DeploymentItem(@"C:\MyDataFiles\")]
    配置フォルダーに MyDataFiles フォルダーの内容をコピーします。

  • (.testsettings ファイル) を使用する場合 [DeploymentItem("%myDir%\myFile.txt")]
    そのファイルが %myDir% が解決済みのディレクトリにあるファイル myFile.txt を展開します。

属性の使用方法の詳細については、「属性を使用したメタデータの拡張」を参照してください。

次のテスト "test*.xml" という名前のファイルを読み取ります。ファイルをテストでテストとアプリケーションで使用できるようにするには、DeploymentItemAttributeを使用して指定されます。テスト メソッドは、アプリケーションをテストすることも、次にファイルを配置ディレクトリの下にあることを確認します。

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        // Copy files from build directory:
        [DeploymentItem("test1.xml")]
        [DeploymentItem("test2.xml", "Data")]
        // Copy files from Resources subdirectory:
        [DeploymentItem("Resources\\test3.xml")]
        [DeploymentItem("Resources\\test4.xml", "Data")]

        public void ConstructorTest()
        {
            // Verify that the files exist in the deployment directory
            Assert.IsTrue(File.Exists("test1.xml"));
            Assert.IsTrue(File.Exists("Data\\test2.xml"));
            Assert.IsTrue(File.Exists("test3.xml"));
            Assert.IsTrue(File.Exists("Data\\test4.xml"));

            // Now test the application ...
        }
    }
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting

Namespace DeploymentTest
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("test1.xml")> _
        <DeploymentItem("test2.xml", "Data")> _
        <DeploymentItem("Resources\test3.xml")> _
        <DeploymentItem("Resources\test4.xml", "Data")> _
        Sub ConstructorTest()
            Assert.IsTrue(File.Exists("test1.xml"))
            Assert.IsTrue(File.Exists("Data\test2.xml"))
            Assert.IsTrue(File.Exists("test3.xml"))
            Assert.IsTrue(File.Exists("Data\test4.xml"))

            ' Now test the application ...
        End Sub
    End Class
End Namespace

スレッド セーフ

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

参照

関連項目

Microsoft.VisualStudio.TestTools.UnitTesting 名前空間