다음을 통해 공유


데이터 기반 단위 테스트 문제 해결

업데이트: 2007년 11월

데이터 기반 단위 테스트를 실행할 때 연결, 인증, 배포 또는 기타 문제가 발생할 수 있습니다. 다음 단원의 정보를 통해 이러한 문제를 해결할 수 있습니다.

테스트에서 데이터 소스에 연결할 수 없는 경우

테스트를 실행하는 데 사용된 사용자 계정에서 데이터 소스에 액세스할 수 있는지 확인합니다. 이렇게 하려면 테스트 실행에 사용되는 사용자 계정을 확인해야 합니다. 예를 들어 원격으로 테스트를 실행하는 경우 에이전트의 사용자 계정에서 테스트가 실행됩니다.

ASP.NET 문제

ASP.NET 테스트를 IIS 웹 서버에서 실행하면 테스트가 'aspnet' 계정에서 실행됩니다. 따라서 ASP.NET 사용자가 데이터 소스에 액세스할 수 있는지 확인해야 합니다.

또한 'Excel ODBC DSN'을 사용하는 경우 '시스템 DSN'을 만들어야 합니다. 시스템 DSN은 모든 사용자가 사용할 수 있습니다. DSN을 만들려면 ODBC 데이터 소스 관리자를 사용합니다. 이렇게 하려면 시작을 클릭하고 제어판, 관리 도구, 데이터 원본을 차례로 엽니다.

데이터 소스 파일 배포

Microsoft Excel 워크시트 또는 .CSV 파일 등의 데이터 원본 파일을 사용하는 경우 테스트가 실행될 때 이러한 파일을 사용할 수 있는지 확인해야 합니다. 이렇게 하려면 테스트 실행 구성 대화 상자를 사용하여 데이터 소스 파일을 배포 항목으로 추가하거나 테스트별 배포 항목으로 추가합니다. 또한 파일에 대한 상대 경로를 지정합니다. 테스트 실행 구성에 대한 자세한 내용은 테스트 실행 구성을 참조하십시오.

인증 문제

가능하면 Windows 인증을 사용합니다.

연결 문자열

Microsoft SQL Server 및 Oracle에 연결할 때는 데이터 연결 대화 상자가 정상적으로 작동하지만 파일 데이터 소스에 연결해야 하는 경우에는 이 방법이 유용하지 않습니다. 이러한 경우 연결 문자열을 지정한 다음 속성 창의 드롭다운 목록 상자에서 데이터 테이블 이름을 선택할 수 있습니다.

다음 표에서는 대부분의 데이터 공급자에 대한 공급자 이름 및 연결 문자열의 예제를 보여 줍니다.

데이터 소스

공급자 이름

연결 문자열

MS SQL Server(.NET 공급자)

System.Data.SqlClient

Data Source=SqlServerName;InitialCatalog=MyDatabaseName;Integrated Security=True;Connect Timeout=30;User Instance=True

MS SQL Express Server(.NET 공급자)

System.Data.SqlClient

Data Source=.\SQLEXPRESS;AttachDbFilename=C:\ \Test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

MS SQL Server(OLEDB, MDAC 공급자)

System.Data.OleDb

Provider=SQLOLEDB;Data Source= SqlServerName;Integrated Security=SSPI;Initial Catalog=MyDatabaseName

MS SQL Server(OLEDB, 기본 클라이언트 공급자)

System.Data.OleDb

Provider=SQLNCLI;Data Source= MySqlServerComputerName;Integrated Security=SSPI;Initial Catalog= MyDatabaseName

MS SQL(ODBC)

System.Data.Odbc

Driver={SQL Server};Server=SqlServerName;Database=DatabaseName;Trusted_Connection=yes

Driver={SQL Server};Server=SqlServerName;Database=DatabaseName;Uid=UserName;Pwd=<password>

Oracle(.NET 공급자)

System.Data.OracleClient

Data Source=OracleServerName;Persist Security Info=True;User ID=scott;Password=<password>;Unicode=True

Oracle(OLEDB, Oracle 공급자)

System.Data.OleDb

Provider=OraOLEDB.Oracle;Data Source=OracleServerName;Persist Security Info=True;OSAuthent=1

Provider=OraOLEDB.Oracle;Data Source=OracleServerName;Persist Security Info=True;User ID=scott;Password=<password>

Oracle(OLEDB, Microsoft 공급자)

System.Data.OleDb

Provider=MSDAORA;Data Source= OracleServerName;Persist Security Info=True; User ID=scott;Password=<password>

Oracle(ODBC)

System.Data.Odbc

Driver={Microsoft ODBC for Oracle};Server=OracleServerName;Uid=scott;Pwd=<password>

Excel(OLEDB)

System.Data.OleDb

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ Test.xls;Persist Security Info=False;Extended Properties="Excel 8.0"

Excel(ODBC, MS Excel 드라이버)

System.Data.Odbc

Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\\Test.xls;DefaultDir=C:\

   Sheet1 테이블의 경우 데이터 테이블 이름으로 Sheet1$를 사용합니다.

Excel(ODBC, DSN)

System.Data.Odbc

Dsn=Excel Files;dbq=C:\Test.xls;defaultdir=C:\;driverid=790;maxbuffersize=2048;pagetimeout=5

    ASP.NET에서 테스트를 실행할 때는 사용자 DSN 대신 시스템 DSN을 사용하는 것이 좋습니다.

CSV/텍스트 파일(OLEDB)

System.Data.OleDb

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties="text;HDR=Yes;FMT=Delimited”

    test.csv 파일의 경우 테이블 이름으로 test#csv를 사용합니다.

참고   HDR=Yes는 첫 번째 행에 실제 데이터가 아닌 열 이름이 들어 있다는 의미입니다.

CSV/텍스트 파일(ODBC)

System.Data.Obdc

Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\;Extensions=asc,csv,tab,txt

ODBC through Dsn

System.Data.Obdc

Dsn=MyDsn;Uid=UserName;Pwd=<password>

FILEDSN=C:\MyDsn.dsn;Uid=UserName;Pwd=<password>

컴파일된 코드와 별도로 데이터 소스 지정

App.config 파일을 사용하여 테스트의 데이터 소스를 지정할 수 있습니다. 이렇게 하면 테스트 어셈블리를 다시 컴파일하지 않고도 서버, 테이블 이름 등의 데이터 소스 특성을 변경할 수 있습니다. 명령줄에서 테스트를 실행하는 경우 App.config 파일이 테스트 어셈블리와 같은 디렉터리에 있어야 합니다.

예제

[TestMethod][DataSource("MyDataSource")]

[DeploymentItem("MyDataSource.csv")]public void MyTest() {}

App.config 파일의 내용

<configSections><section name="microsoft.visualstudio.qualitytools" type="Microsoft.VisualStudio.QualityTools.UnitTesting.Framework.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></configSections><microsoft.visualstudio.qualitytools><dataSources><add name="MyDataSource" connectionString="MyConnectionString" dataTableName="ChildSearchCriteria" dataAccessMethod="Sequential" /></dataSources></microsoft.visualstudio.qualitytools>

참고:

Run unit tests in application domain 속성은 각 단위 테스트 어셈블리가 개별 응용 프로그램 도메인에서 실행되는지 여부를 결정합니다. 이 속성의 기본 설정은 True입니다. 단위 테스트에서 개별 응용 프로그램 도메인 또는 app.config 파일이 올바르게 작동할 필요가 없는 경우 이 속성 값을 False로 설정하면 단위 테스트의 실행 속도를 높일 수 있습니다.

TestInitialize에서 데이터베이스를 초기화한 후 변경 내용이 표시되지 않는 경우

데이터 기반 테스트를 실행하면 단위 테스트 어댑터에서 데이터 테이블에 연결하여 데이터 행 목록을 구성합니다. 그런 다음 각 행을 대상으로 TestInitialize, TestMethod 및 TestCleanup 메서드가 실행됩니다. 사용자가 TestInitialize에서 데이터 행을 변경하면 단위 테스트 어댑터에서 이러한 변경 내용이 인식되지 않습니다. 따라서 데이터 기반 테스트에서 데이터 테이블을 변경하려는 경우 ClassInitialize 또는 AssemblyInitialize 메서드에서 변경해야 합니다.

단위 테스트가 성공하지만 내부 결과가 없는 경우

이러한 결과가 나타나면 데이터 테이블에 행이 없는 것입니다.

기타 문제

해당 문제가 이 문서에 없는 경우 지원 포럼과 Visual Studio Team Edition for Developers 및 Visual Studio Team System Test Edition의 개별 포럼에서 해결책을 검색하거나 질문을 게시할 수 있습니다.

참고 항목

작업

방법: 데이터 기반 단위 테스트 구성

개념

데이터 기반 단위 테스트 코딩