2013-06-17 5 views
6

テストデータがExcelに格納されている場所はたくさんあります。 ExcelシートがDataSourceとしてTestContextに接続されているtestmethodsを作成しました。データソースとしてExcelワークシートを使用してテスト結果をTestContextに書き戻す

便宜上、Excelシートをテストの結果で更新して、データ(またはシステム)が間違っている場所を見やすくしたいと考えています。

物事は私が試した:

TestContext.DataRow.BeginEdit(); 
TestContext.DataRow["Result"] = "change"; 
TestContext.DataRow.EndEdit(); 
TestContext.DataRow.AcceptChanges(); 

結果:

TestContext.DataRowに直接書き込む渡しますが、行は私のExcelファイルに更新されません。

string currentRow = TestContext.DataRow["RowId"].ToString(); 
System.Data.Common.DbCommand cmd = TestContext.DataConnection.CreateCommand(); 
cmd.CommandText = String.Format("UPDATE {0} SET {1} = pass WHERE {2} = {3}", sheetName, columnName, "RowId", currentRow); 
cmd.CommandType = System.Data.CommandType.Text; 
cmd.ExecuteReader(); 

結果:System.Data.OleDb.OleDbException: Syntax error in UPDATE statement.

そしてTestContextDataRowを変更することで、それを更新:

string currentRow = TestContext.DataRow["RowId"].ToString(); 
OleDbDataAdapter adapter = new OleDbDataAdapter(); 
adapter.UpdateCommand = new OleDbCommand(String.Format("UPDATE {0} SET {1} = pass WHERE {2} = {3}", sheetName, columnName, "RowId", currentRow)); 
adapter.UpdateCommand.Connection = (OleDbConnection)TestContext.DataConnection; 
adapter.Update(new System.Data.DataRow[] { TestContext.DataRow }); 

結果:また渡し、ない行をDataConnectionを通してそれを更新

私のExcelファイルでも更新されます。

誰かがこの前にこれを成功させましたか?あるいは誰かが私が間違っているかもしれないヒントを持っていますか?

+1

私はあなたのテストデータを読み込み専用とみなすべきだと思います。ファイルを変更しないでください。代わりに、失敗した行からの有用な情報を含む有用な出力をテストから生成します。 –

+0

@PabloRomeoあなたに感謝してくれてありがとうございました。今、私はこれをやっています:行情報を含むすべての列ヘッダーをコンソールに出力し、Description属性を使用してGherkin言語のテストケース情報を入力します。技術者でない人でも再テスト可能です。 Excelファイルのカスタム列に結果を出力し、テストで失敗したデータを表示するために条件付き書式を使用すると、ポリシーやファイルロッキングのチェックアウトなどのこの方法ではより困難に遭遇しました。 – AutomatedChaos

+0

VSを使用してTestResults.trxから失敗または渡されたステータスを表示するだけではどうですか?私が間違っていなければ、データ駆動テストは複数のエントリ(データソースの各行に1つずつ)に拡張されます。 また、これまでは、TRXの結果を人が読めるhtmlファイルに変換するために公開されているXSLT変換をいくつか使用しました。 –

答えて

0

MSTestはデータ駆動型テストのデータ行への書き戻しをサポートしていません。

Trace.Write()などの方法を使用して、テストの個々の繰り返しごとの結果に結果を出力することをお勧めします。これは、テストが失敗した場合のデバッグのためです。

関連する問題