-1

失敗したテスト ケースの数を見つける必要があります。ここで TC003 には、2 つが成功し、1 つが失敗した (3 つの SUB テストケース) が含まれています。

testcase(4) Passed:-(3) Failed-(1) の合計数を取得する必要があります。どうすればよいですか。

TC001-Passed
TC002-Passed
TC003-Passed
TC003-Passed
TC003-Failed
TC004-Passed

私はdataTableに持っています。つまり、ItemArray[0]Contains TestCaseIDとItemArray[3]Contains Status

4

4 に答える 4

1

dataTableにあります。つまり、ItemArray[0]にはTestCaseIDが含まれ、ItemArray[3]にはステータスが含まれます

さて、これがDataTableとLinq-To-DataSet:を使ったアプローチです。

var tcaseGroups = tbl.AsEnumerable()
    .GroupBy(r => r.Field<String>("TestCaseID"))
    .Select(g => new
    {
        Testcase = g.Key,
        Count = g.Count(),
        CaseInfo = g.GroupBy(r => r.Field<String>("Status"))
                     .Select(gStatus => new
                     {
                         Status = gStatus.Key,
                         Count = gStatus.Count()
                     })
    });

// output the result
foreach (var x in tcaseGroups)
    Console.WriteLine("Testcase:{0}, Count:{1} Results:[{2}]", x.Testcase, x.Count
        , String.Join(",", x.CaseInfo.Select(xx => 
            String.Format("Status:{0} Count:{1}", xx.Status, xx.Count))));
于 2012-09-04T12:36:55.817 に答える
1

わかりました、これは厄介ですが、簡単にしましょう:

void Main()
{
    List<string> AllTheTestCasesStrings = new List<string>();
    AllTheTestCasesStrings.Add("TC001 Passed");
    AllTheTestCasesStrings.Add("TC002 Passed");
    AllTheTestCasesStrings.Add("TC003 Passed");
    AllTheTestCasesStrings.Add("TC003 Passed");
    AllTheTestCasesStrings.Add("TC003 Failed");
    AllTheTestCasesStrings.Add("TC004 Passed");

    List<TestCase> AllTheTestCases = new List<TestCase>();

    foreach(string CurrentTest in AllTheTestCasesStrings)
    {
        TestCase NewTest = new TestCase();
        NewTest.Name = CurrentTest.Split(' ')[0];
        NewTest.Passed = CurrentTest.Split(' ')[1].Equals("Passed");

        AllTheTestCases.Add(NewTest);
    }

    int FailedTestCases = AllTheTestCases.Where<TestCase>(x => !x.Passed).GroupBy<TestCase, string>(x => x.Name).Count();
    int PassedTestCases = AllTheTestCases.Where<TestCase>(x => x.Passed).GroupBy<TestCase, string>(x => x.Name).Count();

    Console.WriteLine("Failed: " + FailedTestCases);
    Console.WriteLine("Passed: " + PassedTestCases);
}

public class TestCase
{
    public string Name;
    public bool Passed;
}
于 2012-09-04T12:30:06.220 に答える