チュートリアル : データ ソースを定義するための構成ファイルの使用Walkthrough: Using a Configuration File to Define a Data Source

このチュートリアルでは、単体テスト用に app.config ファイルで定義されたデータ ソースを使用する方法について説明します。This walkthrough illustrates how to use a data source defined in an app.config file for unit testing. ここでは、<xref:Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute> クラスで使用できるデータ ソースを定義する app.config ファイルの作成方法を学習します。You will learn how to create an app.config file that defines a data source that can be used by the <xref:Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute> class. このチュートリアルでは、次のタスクについて説明します。Tasks presented in this walkthrough include the following:

  • app.Config ファイルを作成する。Creating an app.config file.

  • カスタム構成セクションを定義する。Defining a custom configuration section.

  • 接続文字列を定義する。Defining connection strings.

  • データ ソースを定義する。Defining the data sources.

  • <xref:Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute> クラスを使用してデータ ソースにアクセスする。Accessing the data sources using the <xref:Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute> class.

必須コンポーネントPrerequisites

このチュートリアルを完了するための要件を次に示します。To complete this walkthrough, you will need:

  • Visual Studio EnterpriseVisual Studio Enterprise

  • 少なくとも 1 つのテスト メソッドにデータを提供する Microsoft Access または Microsoft ExcelEither Microsoft Access or Microsoft Excel to provide data for at least one of the test methods.

  • テスト プロジェクトを含む Visual Studio ソリューションA Visual Studio solution that contains a test project.

App.config ファイルを作成するCreate the App.config File

app.config ファイルをプロジェクトに追加するにはTo add an app.config file to the project

  1. テスト プロジェクトに既に app.config ファイルが存在する場合は、「カスタム構成セクションの定義」に進みます。If your test project already has an app.config file, go to Define a Custom Configuration Section.

  2. ソリューション エクスプローラーで、テスト プロジェクトを右クリックして [追加] をポイントし、[新しい項目] をクリックします。Right-click your test project in the Solution Explorer, point to Add, and then click New Item.

    [新しい項目の追加] ウィンドウが開きます。The Add New Item window opens.

  3. [アプリケーション構成ファイル] テンプレートを選択し、[追加] をクリックします。Select the Application Configuration File template and click Add.

カスタム構成セクションを定義するDefine a Custom Configuration Section

app.config ファイルを確認します。Examine the app.config file. 少なくとも XML 宣言とルート要素が含まれています。It contains at least the XML declaration and a root element.

app.config ファイルにカスタム構成セクションを追加するにはTo add the custom configuration section to the app.config file

  1. app.config のルート要素は configuration 要素である必要があります。The root element of app.config should be the configuration element. configuration 要素内に configSections 要素を作成します。Create a configSections element within the configuration element. configSections は、app.config ファイル内で最初の要素である必要があります。The configSections should be the first element in the app.config file.

  2. configSections 要素内に、section 要素を作成します。Within the configSections element, create a section element.

  3. section 要素に、name という属性を追加し、その属性に microsoft.visualstudio.testtools という値を割り当てます。In the section element, add an attribute called name and assign it a value equal microsoft.visualstudio.testtools. type という別の属性を追加し、その属性に Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a という値を割り当てます。Add another attribute called type and assign it a value equal Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

    section 要素は次のようになります。The section element should look similar to this:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>  

注意

アセンブリ名は、使用している Microsoft Visual Studio .NET Framework のビルドと一致する必要があります。The assembly name must match the Microsoft Visual Studio .NET Framework build that you are using. Visual Studio .NET Framework 3.5 を使用している場合は、Version を 9.0.0.0 に設定します。Set the Version to 9.0.0.0 if you are using the Visual Studio .NET Framework 3.5. Visual Studio .NET Framework 2.0 を使用している場合は、Version を 8.0.0.0 に設定します。If you are using the Visual Studio .NET Framework 2.0, set the Version to 8.0.0.0.

接続文字列を定義するDefine Connection Strings

接続文字列は、データ ソースにアクセスするためのプロバイダー固有の情報を定義します。The connection strings define provider specific information for accessing data sources. 構成ファイルで定義された接続文字列は、アプリケーション全体で再利用可能なデータ プロバイダー情報を提供します。Connection strings defined in configuration files provide reusable data provider information across an application. このセクションでは、カスタム構成セクションで定義されているデータ ソースによって使用される 2 つの接続文字列を作成します。In this section, you create two connection strings that will be used by data sources that are defined in the Custom Configuration Section.

接続文字列を定義するにはTo define connection strings

  1. configSections 要素の後に、connectionStrings 要素を作成します。After the configSections element, create a connectionStrings element.

  2. connectionStrings 要素内に、add 要素を 2 つ作成します。Within the connectionStrings element, create two add elements.

  3. 1 つ目の add 要素には、Microsoft Access データベースに接続するための次の属性と値を作成します。In the first add element, create the following attributes and values for a connection to a Microsoft Access database:

属性Attribute Values
name "MyJetConn"
connectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

2 つ目の add 要素には、Microsoft Excel スプレッドシートに接続するための次の属性と値を作成します。In the second add element, create the following attributes and values for a connection to a Microsoft Excel spreadsheet:

name "MyExcelConn"
connectionString "Dsn=Excel Files;dbq=data.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5"
providerName "System.Data.Odbc"

connectionStrings 要素は次のようになります。The connectionStrings element should look similar to this:

<connectionStrings>  
    <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />  
    <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />  
</connectionStrings>  

データ ソースを定義するDefine Data Sources

データ ソース セクションには、テスト エンジンがデータ ソースからデータを取得するために使用する 4 つの属性が含まれます。The data sources section contains four attributes that are used by the test engine to retrieve data from a data source.

  • name は、使用するデータ ソースを指定するために <xref:Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute> で使用される ID を定義します。name defines the identity used by the <xref:Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute> to specify which data source to use.

  • connectionString は、前の「接続文字列を定義する」セクションで作成した接続文字列を識別します。connectionString identifies the connection string created in the previous Define Connection Strings section.

  • dataTableName は、テストで使用するデータを保持するテーブルまたはシートを定義します。dataTableName defines the table or sheet that holds the data to use in the test.

  • dataAccessMethod は、データ ソース内のデータ値にアクセスする方法を定義します。dataAccessMethod defines the technique for accessing data values in the data source.

    ここでは、単体テストで使用する 2 つのデータ ソースを定義します。In this section, you will define two data sources to use in a unit test.

データ ソースを定義するにはTo define data sources

  1. connectionStrings 要素の後に、microsoft.visualstudio.testtools 要素を作成します。After the connectionStrings element, create a microsoft.visualstudio.testtools element. この部分は、「カスタム構成セクションを定義する」セクションで作成されています。This section was created in Define a Custom Configuration Section.

  2. microsoft.visualstudio.testtools 要素内に、dataSources 要素を作成します。Within the microsoft.visualstudio.testtools element, create a dataSources element.

  3. dataSources 要素内に、add 要素を 2 つ作成します。Within the dataSources element, create two add elements.

  4. 1 つ目の add 要素には、Microsoft Access データ ソース用の次の属性と値を作成します。In the first add element, create the following attributes and values for a Microsoft Access data source:

属性Attribute Values
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

2 つ目の add 要素には、Microsoft Excel データ ソース用の次の属性と値を作成します。In the second add element, create the following attributes and values for a Microsoft Excel data source:

Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

microsoft.visualstudio.testtools 要素は次のようになります。The microsoft.visualstudio.testtools element should look similar to this:

<microsoft.visualstudio.testtools>  
    <dataSources>  
        <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>  
        <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>  
    </dataSources>  
</microsoft.visualstudio.testtools>  

最終的な app.config ファイルは次のようになります。The final app.config file should look similar to this:

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <configSections>  
        <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>   
    </configSections>  
    <connectionStrings>  
        <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />  
        <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />  
    </connectionStrings>  
    <microsoft.visualstudio.testtools>  
        <dataSources>  
            <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>  
            <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>  
        </dataSources>  
    </microsoft.visualstudio.testtools>  
</configuration>  

app.config で定義したデータ ソースを使用して単体テストを作成するCreate a Unit Test Using Data Sources Defined in app.config

app.config ファイルの定義が完了したところで、app.config ファイルで定義されているデータ ソース内にあるデータを使用する単体テストを作成します。Now that an app.config file has been defined, you will create a unit test that uses data located in the data sources that are defined in the app.config file. このセクションでは、次のタスクを実行します。In this section, we will:

  • app.config ファイルにあるデータ ソースを作成する。Create the data sources found in the app.config file.

  • 各データ ソースの値を比較する 2 つのテスト メソッド内のデータ ソースを使用する。Use the data sources in two test methods that compare the values in each data source.

Microsoft Access データ ソースを作成するにはTo create a Microsoft Access data source

  1. testdatasource.accdb という名前の Microsoft Access データベースを作成します。Create a Microsoft Access database named testdatasource.accdb.

  2. testdatasource.accdb にテーブルを作成し、MyDataTable という名前を付けます。Create a table and name it MyDataTable in testdatasource.accdb.

  3. Number データ型を使用して、MyDataTableArg1Arg2 という名前の 2 つのフィールドを作成します。Create two fields in MyDataTable named Arg1 and Arg2 using the Number data type.

  4. Arg1Arg2 の値がそれぞれ (10,50)、(3,2)、(6,0)、(0,8)、(12312,1000) となる 5 つのエンティティを MyDataTable に追加します。Add five entities to MyDataTable with the following values for Arg1 and Arg2, respectively: (10,50), (3,2), (6,0), (0,8) and (12312,1000).

  5. データベースを保存して閉じます。Save and close the database.

  6. データベースの場所を指すように接続文字列を変更します。Change the connection string to point to the location of the database. データベースの場所を反映するように Data Source の値を変更します。Change the value of Data Source to reflect the location of the database.

Microsoft Excel データ ソースを作成するにはTo create a Microsoft Excel data source

  1. data.xlsx という名前の Microsoft Excel スプレッドシートを作成します。Create a Microsoft Excel spreadsheet named data.xlsx.

  2. Sheet1 という名前のシートが data.xlsx にまだ存在しない場合は作成します。Create a sheet named Sheet1 if it does not already exist in data.xlsx.

  3. Sheet1 に 2 つの列ヘッダーを作成し、Val1Val2 という名前を付けます。Create two column headers and name them Val1 and Val2 in Sheet1.

  4. Val1Val2 の値がそれぞれ (1,1)、(2,2)、(3,3)、(4,4)、(5,0) となる 5 つのエンティティを Sheet1 に追加します。Add five entities to Sheet1 with the following values for Val1 and Val2, respectively: (1,1), (2,2), (3,3), (4,4) and (5,0).

  5. スプレッドシートを保存して閉じます。Save and close the spreadsheet.

  6. スプレッドシートの場所を指すように接続文字列を変更します。Change the connection string to point to the location of the spreadsheet. スプレッドシートの場所を反映するように dbq の値を変更します。Change the value of dbq to reflect the location of the spreadsheet.

app.config のデータ ソースを使用して単体テストを作成するにはTo create a unit test using the app.config data sources

  1. 単体テストをテスト プロジェクトに追加します。Add a unit test to the test project.

    詳細については、「既存コードに対する単体テストの作成と実行」を参照してください。For more information, see Creating and Running Unit Tests for Existing Code.

  2. 自動生成された単体テストの内容を次のコードに置き換えます。Replace the auto-generated contents of the unit test with the following code:

    using System;  
    using Microsoft.VisualStudio.TestTools.UnitTesting;  
    
    namespace TestProject1  
    {  
         [TestClass]  
        public class UnitTest1  
        {  
            private TestContext context;  
    
            public TestContext TestContext  
            {  
                get { return context; }  
                set { context = value; }  
            }  
    
            [TestMethod()]  
            [DeploymentItem("MyTestProject\\testdatasource.accdb")]  
            [DataSource("MyJetDataSource")]  
            public void MyTestMethod()  
            {  
                int a = Int32.Parse(context.DataRow["Arg1"].ToString());  
                int b = Int32.Parse(context.DataRow["Arg2"].ToString());  
                Assert.AreNotEqual(a, b, "A value was equal.");  
            }  
    
            [TestMethod()]  
            [DeploymentItem("MyTestProject\\data.xlsx")]  
            [DataSource("MyExcelDataSource")]  
            public void MyTestMethod2()  
            {  
                Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]);  
            }  
        }  
    }  
    
  3. DataSource 属性を確認します。Examine the DataSource attributes. app.config ファイルの設定名に注意してください。Notice the setting names from the app.config file.

  4. ソリューションをビルドして、MyTestMethod テストと MyTestMethod2 テストを実行します。Build your solution and run MyTestMethod and MyTestMethod2 tests.

重要

データ ソースなどの項目を、配置ディレクトリのテストからアクセスできるように配置します。Deploy items like data sources so that they are accessible to the test in the deployment directory.

関連項目See Also

コードの単体テスト Unit Test Your Code
既存コードに対する単体テストの作成と実行 Creating and Running Unit Tests for Existing Code
アプリケーションのテスト Testing the application
方法: データ ドリブン単体テストを作成するHow To: Create a Data-Driven Unit Test