使用Excel WorkSheet作为DataSource将测试结果写回TestContext

时间:2013-06-17 13:57:28

标签: c# unit-testing data-driven-tests

我们有很多测试,测试数据存储在Excel中。我创建了测试方法,其中Excel工作表以DataSource TestContext连接到TestContext.DataRow

为了方便起见,我想用测试结果更新Excel表格,这样就很容易看出数据(或系统)的错误位置。

我尝试的事情:

直接将其写入TestContext.DataRow.BeginEdit(); TestContext.DataRow["Result"] = "change"; TestContext.DataRow.EndEdit(); TestContext.DataRow.AcceptChanges();

DataConnection

结果:传递,但我的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.

结果:DataRow

通过更改TestContext下的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 });

来更新它
{{1}}

结果:也通过,但我的Excel文件中也没有更新行。

有人在成功之前做过这件事吗?或者有人暗示我可能错了吗?

1 个答案:

答案 0 :(得分:0)

MSTest不支持写回数据行以进行数据驱动测试,而且它不是为此而设计的。

我的建议是使用Trace.Write()等方法将结果打印到测试的每个单独迭代的结果中,这是我在测试失败时进行调试的目的。