c# - 使用 Excel 文件检索数据以进行单元测试 C#

标签 c# web-services unit-testing

我正在为 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 文件中只有一行,我能够检索数据并对其进行测试。

enter image description here

但现在的要求是,如果excel文件中有不止一行,则单元测试应该循环遍历每一行并测试每一行以查看通过/失败。

enter image description here

请帮我解决这个问题。如何循环遍历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/

相关文章:

php - 停止数据库读取阻止 web ui 渲染

unit-testing - 如何在没有类的情况下将纯Groovy脚本导入Spock测试

.net - 考虑到目标之间的实现差异,如何正确地对具有多个目标框架的 .NET 项目进行单元测试?

php - 如何使用 PHPUnit 处理失败的 PHP 断言?

c# - Unity 广告的 resultCallback 仅在视频完成时奖励

c# - 从另一个表单显示一个表单

java - CXF JSONProvider 编码导致 java.lang.ClassNotFoundException : com. sun.xml.bind.marshaller.NamespacePrefixMapper

c# - .NET 8 IEnumerable 接口(interface)的序列化/反序列化

c# - Kinect 用户检测

.net - 列出<客户> 全部或全部