我们有很多测试,测试数据存储在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文件中也没有更新行。
有人在成功之前做过这件事吗?或者有人暗示我可能错了吗?
答案 0 :(得分:0)
MSTest不支持写回数据行以进行数据驱动测试,而且它不是为此而设计的。
我的建议是使用Trace.Write()
等方法将结果打印到测试的每个单独迭代的结果中,这是我在测试失败时进行调试的目的。