#!/usr/bin/env php processRowspanForUnitCasesTest(array())) && p() && e('0'); // 期望返回空数组 // 测试步骤2:单个套件多个用例 $runs1 = array(); for($i = 1; $i <= 3; $i++) { $run = new stdclass(); $run->id = $i; $run->suite = 'phpunit'; $run->case = $i; $run->rowspan = 0; $runs1[] = $run; } r($testtaskTest->processRowspanForUnitCasesTest($runs1)) && p('0:rowspan;1:rowspan;2:rowspan') && e('3;0;0'); // 第一个用例rowspan=3,其他为0 // 测试步骤3:多个套件混合情况 $runs2 = array(); $suites = array('suite1' => 2, 'suite2' => 3, 'suite3' => 1); $id = 1; foreach($suites as $suiteName => $count) { for($i = 0; $i < $count; $i++) { $run = new stdclass(); $run->id = $id++; $run->suite = $suiteName; $run->case = $run->id; $run->rowspan = 0; $runs2[] = $run; } } r($testtaskTest->processRowspanForUnitCasesTest($runs2)) && p('0:rowspan;1:rowspan;2:rowspan;3:rowspan;4:rowspan;5:rowspan') && e('2;0;3;0;0;1'); // 每个套件第一个用例有正确rowspan // 测试步骤4:相同套件分散分布情况 $runs3 = array(); $caseData = array( array('id' => 1, 'suite' => 'junit', 'case' => 1), array('id' => 2, 'suite' => 'pytest', 'case' => 2), array('id' => 3, 'suite' => 'junit', 'case' => 3), array('id' => 4, 'suite' => 'pytest', 'case' => 4), array('id' => 5, 'suite' => 'junit', 'case' => 5) ); foreach($caseData as $data) { $run = new stdclass(); $run->id = $data['id']; $run->suite = $data['suite']; $run->case = $data['case']; $run->rowspan = 0; $runs3[] = $run; } r($testtaskTest->processRowspanForUnitCasesTest($runs3)) && p('0:rowspan;1:rowspan;2:rowspan;3:rowspan;4:rowspan') && e('3;2;3;2;3'); // 每次遇到不同suite时都重新赋值rowspan // 测试步骤5:套件名称为空的边界情况 $runs4 = array(); $emptySuiteData = array( array('id' => 1, 'suite' => '', 'case' => 1), array('id' => 2, 'suite' => '', 'case' => 2), array('id' => 3, 'suite' => 'valid_suite', 'case' => 3), array('id' => 4, 'suite' => '', 'case' => 4) ); foreach($emptySuiteData as $data) { $run = new stdclass(); $run->id = $data['id']; $run->suite = $data['suite']; $run->case = $data['case']; $run->rowspan = 0; $runs4[] = $run; } r($testtaskTest->processRowspanForUnitCasesTest($runs4)) && p('0:rowspan;1:rowspan;2:rowspan;3:rowspan') && e('3;0;1;3'); // 空套件名也能正确分组,每次遇到空套件时重新赋值