データ ドリブン単体テストのトラブルシューティング
データ ドリブン単体テストを実行すると、接続、認証、配置などの問題が発生することがあります。以下のセクションの情報を活用して、問題を解決してください。
テストをデータ ソースに接続できない
テストの実行に使用しているユーザー アカウントで、データ ソースにアクセスできることを確認してください。このためには、テストの実行に使用されているユーザー アカウントを把握する必要があります。たとえば、テストをリモートで実行する場合、テストはエージェントのユーザー アカウントで実行されます。
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=tiger;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=tiger |
Oracle (OLEDB、Microsoft プロバイダ) |
System.Data.OleDb |
Provider=MSDAORA;Data Source= OracleServerName;Persist Security Info=True; User ID=scott;Password=tiger |
Oracle (ODBC) |
System.Data.Odbc |
Driver={Microsoft ODBC for Oracle};Server=OracleServerName;Uid=scott;Pwd=tiger |
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>
データベースを TestInitialize で初期化した後、変更が表示されない
データ ドリブン単体テストを実行すると、単体テスト アダプタがデータ テーブルに接続し、データ行の一覧を作成します。次に、各行について、TestInitialize、TestMethod、および TestCleanup の各メソッドを実行します。TestInitialize でデータ行を変更しても、単体テスト アダプタはその変更を把握できません。したがって、データ ドリブン テストでデータ テーブルを変更する場合は、ClassInitialize メソッドまたは AssemblyInitialize メソッドで行ってください。
単体テストは成功するが、内部結果が含まれていない
これは、データ テーブルに行がないことを示しています。
その他の問題
問題がこの一覧に含まれていなかった場合は、https://msdn.microsoft.com/vstudio/support/forums/ のサポート フォーラムや、Visual Studio Team Edition for Developers や Visual Studio Team Edition for Testers の個別のフォーラムで、回答を検索したり質問を投稿したりしてください。