다음을 통해 공유


안내: 구성 파일을 사용하여 데이터 소스 정의

이 연습에서는 단위 테스트를 위해 app.config 파일에 정의된 데이터 원본을 사용하는 방법을 보여 줍니다. DataSourceAttribute 클래스에서 사용할 수 있는 데이터 원본을 정의하는 app.config 파일을 만드는 방법을 알아봅니다. 이 연습에 제시된 작업에는 다음이 포함됩니다.

  • app.config 파일 만들기

  • 사용자 지정 구성 섹션 정의

  • 연결 문자열 정의

  • 데이터 원본 정의

  • DataSourceAttribute 클래스를 사용하여 데이터 원본에 액세스합니다.

메모

DataSourceAttribute는 현재 .NET Framework에서만 지원됩니다.

필수 구성 요소

이 연습을 완료하려면 다음이 필요합니다.

  • Visual Studio Enterprise

  • Microsoft Access 또는 Microsoft Excel에서 테스트 방법 중 하나 이상에 대한 데이터를 제공합니다.

  • 테스트 프로젝트를 포함하는 Visual Studio 솔루션입니다.

프로젝트에 app.config 파일 추가

  1. 테스트 프로젝트에 이미 app.config 파일이 있는 경우 사용자 지정 구성 정의 섹션으로 이동합니다.

  2. 솔루션 탐색기테스트 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 추가>새 항목선택합니다.

    새 항목 추가 창이 열립니다. 모든 항목 템플릿이 표시되지 않으면 모든 템플릿 표시를 선택한 다음 항목 템플릿을 선택합니다.

  3. 애플리케이션 구성 파일 템플릿을 선택하고 추가를 클릭합니다.

사용자 지정 구성 섹션 정의

app.config 파일을 검사합니다. 최소한 XML 선언과 루트 요소가 포함됩니다.

app.config 파일에 사용자 지정 구성 섹션을 추가하려면

  1. app.config 루트 요소는 구성 요소여야 합니다. 구성 요소 내에 configSections 요소를 만듭니다. configSectionsapp.config 파일의 첫 번째 요소여야 합니다.

  2. configSections 요소 내에서 섹션 요소를 만듭니다.

  3. 섹션 요소에서 name 특성을 추가하고 microsoft.visualstudio.testtools값을 할당합니다. type라는 다른 특성을 추가하고 Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions값을 할당합니다.

섹션 요소는 다음과 유사합니다.

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />

메모

어셈블리 이름은 사용 중인 버전과 일치해야 합니다.

연결 문자열 정의

연결 문자열은 데이터 원본에 액세스하기 위한 공급자별 정보를 정의합니다. 구성 파일에 정의된 연결 문자열은 애플리케이션에서 재사용 가능한 데이터 공급자 정보를 제공합니다. 이 섹션에서는 사용자 지정 구성 섹션에 정의된 데이터 원본에서 사용할 두 개의 연결 문자열을 만듭니다.

주의

연결 문자열에는 중요한 데이터(예: 암호)가 포함될 수 있습니다. 연결 문자열은 소스 코드 및 컴파일된 어셈블리에 일반 텍스트로 저장됩니다. 소스 코드 및 어셈블리에 대한 액세스를 제한하여 이 중요한 정보를 보호합니다.

연결 문자열을 정의하려면

  1. configSections 요소 후에 connectionStrings 요소를 만듭니다.

  2. connectionStrings 요소 내에서 두 개의 요소를 추가합니다.

  3. 첫 번째 요소를 추가하고 Microsoft Access 데이터베이스에 연결하기 위한 다음 특성 및 값을 만듭니다.

속성 가치
name "MyJetConn"
connectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

두 번째 요소에 요소를 추가하고, Microsoft Excel 스프레드시트와의 연결을 위해 다음 특성과 값을 만듭니다.

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

connectionStrings 요소는 다음과 유사합니다.

<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>

데이터 원본 정의

데이터 원본 섹션에는 테스트 엔진에서 데이터 원본에서 데이터를 검색하는 데 사용되는 네 가지 특성이 포함되어 있습니다.

  • name 사용할 데이터 원본을 지정하기 위해 DataSourceAttribute 사용하는 ID를 정의합니다.

  • connectionString 이전 연결 문자열 정의 섹션에서 만든 연결 문자열을 식별합니다.

  • dataTableName 테스트에서 사용할 데이터를 보유하는 테이블 또는 시트를 정의합니다.

  • dataAccessMethod 데이터 원본의 데이터 값에 액세스하는 기술을 정의합니다.

이 섹션에서는 단위 테스트에서 사용할 두 개의 데이터 원본을 정의합니다.

데이터 원본을 정의하려면

  1. connectionStrings 요소 후에 microsoft.visualstudio.testtools 요소를 생성하십시오. 이 섹션은 사용자 지정 구성 정의 섹션에서 만들어졌습니다.

  2. microsoft.visualstudio.testtools 요소 내에서 dataSources 요소를 만듭니다.

  3. dataSources 요소 내에서 두 개의 요소를 추가합니다.

  4. 첫 번째 요소를 추가하려면 Microsoft Access 데이터 원본에 대해 다음 특성과 값을 만듭니다.

속성 가치관
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

두 번째 요소를 추가하고 Microsoft Excel 데이터 원본에 대해 다음 특성과 값을 만듭니다.

속성 가치들
Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

microsoft.visualstudio.testtools 요소는 다음과 유사합니다.

<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 파일은 다음과 유사합니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
    </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 정의된 데이터 원본을 사용하는 단위 테스트 만들기

이제 app.config 파일이 정의되었으므로 app.config 파일에 정의된 데이터 원본에 있는 데이터를 사용하는 단위 테스트를 만듭니다. 이 섹션에서는 다음을 수행합니다.

  • app.config 파일에 있는 데이터 원본을 만듭니다.

  • 각 데이터 원본의 값을 비교하는 두 가지 테스트 메서드에서 데이터 원본을 사용합니다.

Microsoft Access 데이터 원본을 만들려면

  1. testdatasource.accdb라는 Microsoft Access 데이터베이스를 만듭니다.

  2. 새 테이블을 만들고 이름을 MyDataTable으로 지정하여 testdatasource.accdb에 저장합니다.

  3. Number 데이터 형식을 사용하여 MyDataTableArg1Arg2라는 두 개의 필드를 만듭니다.

  4. MyDataTable에 5개의 엔터티를 추가하며, 각각의 엔터티는 Arg1Arg2에 대해 다음 값으로 설정됩니다: (10,50), (3,2), (6,0), (0,8), (12312,1000).

  5. 데이터베이스를 저장하고 닫습니다.

  6. 데이터베이스의 위치를 가리키도록 연결 문자열을 변경합니다. 데이터베이스의 위치를 반영하도록 Data Source 값을 변경합니다.

Microsoft Excel 데이터 원본을 만들려면

  1. data.xlsx라는 Microsoft Excel 스프레드시트를 만듭니다.

  2. data.xlsx없는 경우 Sheet1 시트를 만듭니다.

  3. 두 개의 열 머리글을 만들고 Sheet1에서 Val1Val2으로 이름을 지정하세요.

  4. 5개의 엔터티를 Sheet1에 추가하고, Val1Val2각각에 (1,1), (2,2), (3,3), (4,4) 및 (5,0) 값을 설정합니다.

  5. 스프레드시트를 저장하고 닫습니다.

  6. 스프레드시트의 위치를 가리키도록 연결 문자열을 변경합니다. 스프레드시트의 위치를 반영하도록 dbq 값을 변경합니다.

app.config 데이터 원본을 사용하여 단위 테스트를 만들려면

  1. 테스트 프로젝트에 단위 테스트를 추가합니다.

  2. 단위 테스트의 자동 생성된 내용을 다음 코드로 바꿉니다.

    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 특성을 검사합니다. app.config 파일의 설정 이름을 확인합니다.

  4. 솔루션을 빌드하고 MyTestMethod 및 MyTestMethod2 테스트를 실행합니다.

중요하다

배포 디렉터리에서 테스트에 액세스할 수 있도록 데이터 원본과 같은 항목을 배포합니다.