DeploymentItemAttribute クラス

更新 : 2007 年 11 月

ファイルやディレクトリなどの配置項目をテスト配置ごとに指定するために使用されます。このクラスは継承できません。

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

構文

'宣言
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
    Inherits Attribute
'使用
Dim instance As DeploymentItemAttribute
[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
public final class DeploymentItemAttribute extends Attribute

解説

Visual Studio Team System 2008 Test Edition は、テストの実行構成の設定に応じて、テストを作成したフォルダで実行するか、または別の "配置" フォルダで実行します。テストの実行設定の詳細については、「方法 : テストの配置を構成する」を参照してください。

ここでは、ビルドされたアセンブリを格納するフォルダとは異なるフォルダで Visual Studio Team System 2008 Test Edition がテストを実行する場合について説明します。

この方法でテストを実行する際、そのテストの実行に固有のテスト配置フォルダ内に、テスト アセンブリ、テスト対象コード アセンブリ、および配置項目が配置されます。この属性は、実行するために配置されたテストによって使用されるファイル、およびそのファイルを格納するディレクトリを識別します。テスト エンジンは、各配置項目のコピーを作成し、OutputDirectory で指定したディレクトリまたは既定のディレクトリに基づいて、テスト配置ディレクトリにコピーを配置します。詳細については、「テストの配置」を参照してください。

この属性はテスト メソッドまたはテスト クラスに対して指定できます。ただし、この属性は派生クラスによって継承されません。

複数の項目を指定するために、この属性のインスタンスを複数配置することもできます。項目のパスには、絶対パスまたは相対パスを使用できます。相対パスは、.testrunconfig ファイルの RelativePathRoot 設定が基準になります。

DeploymentItemAttribute のさまざまな使用法を次の例に示します。

  • [DeploymentItem("file1.xml")]   RelativeRootPath に存在する file1.xml という名前の項目を配置します。このファイルは、配置ルート ディレクトリに配置されます。

  • [DeploymentItem("file2.xml", "DataFiles")]   RelativeRootPath に存在する file2.xml という名前の項目を配置します。このファイルは、配置ルート ディレクトリの DataFiles サブディレクトリに配置されます。

  • [DeploymentItem("C:\\MyDataFiles\\")]   MyDataFiles ディレクトリ内にあるすべての項目およびディレクトリを配置します。配置ディレクトリの下に MyDataFiles ディレクトリは作成されません。MyDataFiles 内のすべてのファイルおよびディレクトリは配置ルート ディレクトリに配置されます。MyDataFiles のディレクトリ構造全体をコピーするには、出力ディレクトリとして MyDataFiles を指定する必要があります。

  • [DeploymentItem("%myDir%\myFile.txt")]   %myDir% の解決後のディレクトリ内に myFile.txt ファイルが存在する場合、このファイルを配置します。

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

次のクラスは、テスト メソッドで使用されるファイルを作成します。

using System;
using System.IO;

namespace CarMaker
{
    public class Car
    {
        private static string make = "myMake";
        private static string model = "myModel";

        public static void CarInfo()
        {
            using (StreamWriter sw = new StreamWriter("testFile1.txt"))
            {
                sw.WriteLine(make);
                sw.WriteLine(model);
            }
        }
    }
}
Imports System
Imports System.IO

Namespace CarMaker
    Public Class Car

        Private Shared make As String = "myMake"
        Private Shared model As String = "myModel"

        Public Shared Sub CarInfo()
            Dim sw As New StreamWriter("testFile1.txt")
            Try
                sw.WriteLine(make)
                sw.WriteLine(model)
            Finally
                sw.Close()
            End Try
        End Sub
    End Class
End Namespace

次のテスト クラスは、"testFile1.txt" という名前のファイルを作成する Car クラスをインスタンス化するテスト メソッドを含んでいます。このファイルは、DeploymentItemAttribute の指定に従って配置されます。次に、テスト メソッドは、このファイルがテスト アセンブリと同じディレクトリに存在するかどうかをテストします。

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

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod()]
        [DeploymentItem("testFile1.txt")]
        public void ConstructorTest()
        {
            // Create the file to deploy
            Car.CarInfo();
            string file = "testFile1.txt";
            // Check if the created file exists in the deployment directory
            Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
                " did not get deployed");
        }
    }
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports MyVBProject.CarMaker

Namespace DeploymentTest
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("testFile1.txt")> _
        Sub ConstructorTest()
            Car.CarInfo()
            Dim file As String = "testFile1.txt"
            Assert.IsTrue(IO.File.Exists(file), "deployment failed: " + file + _
                " did not get deployed")
        End Sub
    End Class
End Namespace

継承階層

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

スレッド セーフ

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

参照

参照

DeploymentItemAttribute メンバ

Microsoft.VisualStudio.TestTools.UnitTesting 名前空間

その他の技術情報

方法 : テストの配置を構成する