6

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

为方便起见,我想用测试结果更新 Excel 工作表,以便轻松查看数据(或系统)的错误位置。

我尝试过的事情:

直接写到TestContext.DataRow

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

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

通过以下方式更新它DataConnection

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 });

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

以前有人成功过吗?还是有人暗示我可能错了?

4

1 回答 1

0

MSTest 不支持写回数据驱动测试的数据行,它的设计初衷不是为了做到这一点。

我的建议是使用Trace.Write()etc. 方法将结果打印到测试的每个单独迭代的结果中,这是我在测试失败的情况下出于调试目的所做的。

于 2014-04-16T23:38:01.197 回答