我正在为 Web 服务测试编写单元测试。我已向 C# 单元测试解决方案添加了服务引用,并开始使用 Web 服务中的类进行测试。我还添加了一个 Excel 文件来提供单元测试值。
下面是我之前所做的示例
[DataSource("System.Data.Odbc"
,"Dsn=Excel Files;dbq=|DataDirectory|\\TestData.xlsx;defaultdir=C:\\TestData;driverid=1046;maxbuffersize=2048;pagetimeout=5"
,"Sheet1$"
,DataAccessMethod.Sequential)
,DeploymentItem("TestProject1\\TestData.xlsx")
,Owner("")
,Description("")
,TestMethod()]
public void test1()
{
try
{
var Service = new Service.ServiceClient();
var Cid = testContextInstance.DataRow["CId"].ToString();
var MNumber = testContextInstance.DataRow["MNumber"].ToString();
var VID = testContextInstance.DataRow["VID"].ToString();
var isVisit = new Service.ISVisit()
{
CID = Cid,
MNum = MNumber,
VCode = VID
};
var first = Service.Medis(isVisit).Cast<Service.ISMedi>().FirstOrDefault();
// Assert
Assert.AreEqual("12345678", first.Proc.ProcID);
}
catch (Exception ex1)
{
if (ex1.InnerException != null)
Debug.WriteLine(ex1.InnerException.Message);
Assert.Fail(ex1.Message);
}
}
这个test1已经通过了.Medis()
,IsVisit
是服务中的类。到目前为止,我的 Excel 文件中只有一行,我能够检索数据并对其进行测试。
但现在的要求是,如果excel文件中有不止一行,则单元测试应该循环遍历每一行并测试每一行以查看通过/失败。
请帮我解决这个问题。如何循环遍历excel文件中的每一行并检查测试结果。如何在c#unitesting中处理这种情况。谢谢
最佳答案
你已经在这样做了,DataSource
属性在源文件中每行运行一次测试。你的问题是断言结果。
为了解决这个问题,您的 Excel 文件还应该包含某种行的预期结果 列(ProcId
也许),您将与行数据一起检索并最后断言反对:
// ...
var VID = testContextInstance.DataRow["VID"].ToString();
var expectedResult = testContextInstance.DataRow["ExpectedResult"].ToString();
var isVisit = new Service.ISVisit()
{
CID = Cid,
MNum = MNumber,
VCode = VID
};
// ...
Assert.AreEqual(expectedResult, first.Proc.ProcID);
关于c# - 使用 Excel 文件检索数据以进行单元测试 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789391/