연습: 구성 파일을 통한 데이터 소스 정의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

  • 하나 이상의 테스트 메서드를 위한 데이터를 제공할 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.

사용자 지정 구성 섹션 정의 SectionDefine 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를 사용 중인 경우 버전을 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을 사용 중인 경우 버전을 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. 이 섹션에서는 사용자 지정 구성 섹션에 정의된 데이터 원본에서 사용되는 두 개의 연결 문자열을 만듭니다.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 요소를 만듭니다.Within the connectionStrings element, create two add elements.

  3. 첫 번째 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"

두 번째 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.

    이 섹션에서는 단위 테스트에 사용할 두 개의 데이터 원본을 정의합니다.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 요소를 만듭니다.Within the dataSources element, create two add elements.

  4. 첫 번째 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"

두 번째 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.

  • 각 데이터 원본의 값을 비교하는 두 개의 테스트 메서드에서 데이터 원본을 사용합니다.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 데이터 형식을 사용하여 이름이 Arg1Arg2인 두 개의 필드를 MyDataTable에 만듭니다.Create two fields in MyDataTable named Arg1 and Arg2 using the Number data type.

  4. Arg1Arg2에 다음과 같은 값을 사용한 5개의 엔터티를 MyDataTable에 추가합니다. (10,50), (3,2), (6,0), (0,8), (12312,1000)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. data.xlsx에 없는 경우 Sheet1이라는 시트를 만듭니다.Create a sheet named Sheet1 if it does not already exist in data.xlsx.

  3. Sheet1에 두 개의 열 머리글을 만들고 Val1Val2로 이름을 지정합니다.Create two column headers and name them Val1 and Val2 in Sheet1.

  4. Val1Val2에 다음과 같은 값을 사용한 5개의 엔터티를 Sheet1에 추가합니다. (1,1), (2,2), (3,3), (4,4), (5,0)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