1

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ファイルに1行しかなく、データを取得してテストすることができました。

ここに画像の説明を入力してください

ただし、Excelファイルに複数の行がある場合、単体テストで各行をループし、各行をテストして合格/不合格を確認する必要があります。

ここに画像の説明を入力してください

これを手伝ってください。Excelファイルの各行をループしてテスト結果を確認する方法。c#単体化でこの状況を処理する方法。ありがとうございます。

4

1 に答える 1

1

あなたはすでにそれを行っていDataSourceます.attributeはソースファイルの行ごとに1回テストを実行します. あなたの問題は結果を主張することです。

それを解決するには、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);
于 2012-10-08T21:19:04.973 に答える