次の方法で共有


データ ドリブン単体テストのトラブルシューティング

更新 : 2007 年 11 月

データ ドリブン単体テストを実行すると、接続、認証、配置などの問題が発生することがあります。以下のセクションの情報を活用して、問題を解決してください。

テストをデータ ソースに接続できない

テストの実行に使用しているユーザー アカウントで、データ ソースにアクセスできることを確認してください。このためには、テストの実行に使用されているユーザー アカウントを把握する必要があります。たとえば、テストをリモートで実行する場合、テストはエージェントのユーザー アカウントで実行されます。

ASP.NET 関連の問題

IIS Web サーバー上で実行する ASP.NET テストは、'aspnet' アカウントで実行されます。このため、データ ソースがこの ASP.NET ユーザーでアクセスできるかどうかを確認してください。

また、'Excel ODBC Dsn' を使用する場合は、'System Dsn' を作成する必要があります。System Dsn はすべてのユーザーが使用できます。DSN を作成するには、ODBC Data Source Administrator を使用します。このためには、[スタート] ボタンをクリックし、[コントロール パネル] をクリックします。次に [管理ツール] を開き、[データ ソース] を開きます。

データ ソース ファイルの配置

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

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 ではなく System 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

Dsn を介した ODBC

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>

ms404700.alert_note(ja-jp,VS.90).gifメモ :

Run unit tests in application ___domain プロパティは、各単体テスト アセンブリをそれぞれ別のアプリケーション ドメインで実行するかどうかを決定します。このプロパティの既定の設定は True です。単体テストを正しく実行するためにそれぞれ別のアプリケーション ドメインまたは app.config ファイルが必要ない場合は、このプロパティの値を False に設定することで実行速度を速くすることができます。

データベースを TestInitialize で初期化した後、変更が表示されない

データ ドリブン単体テストを実行すると、単体テスト アダプタがデータ テーブルに接続し、データ行の一覧を作成します。次に、各行について、TestInitialize、TestMethod、および TestCleanup の各メソッドを実行します。TestInitialize でデータ行を変更しても、単体テスト アダプタはその変更を把握できません。したがって、データ ドリブン テストでデータ テーブルを変更する場合は、ClassInitialize メソッドまたは AssemblyInitialize メソッドで行ってください。

単体テストは成功するが、内部結果が含まれていない

これは、データ テーブルに行がないことを示しています。

その他の問題

問題がこの一覧に含まれていない場合は、support forums または Visual Studio Team Edition for Developers および Visual Studio Team System Test Edition の個別フォーラムで、回答を検索したり質問を投稿したりしてください。

参照

処理手順

方法 : データ ドリブン ユニット テストを構成する

概念

データ ドリブン ユニット テストのコーディング