From 368e1cb59e1db092bb6113eca37b7a7d80cef4c2 Mon Sep 17 00:00:00 2001 From: liugang Date: Thu, 11 Sep 2025 12:26:50 +0800 Subject: [PATCH] + [misc] Add unit tests for caselibTao::checkStepChanged() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../test/lib/caselib.unittest.class.php | 24 ++++++++ module/caselib/test/tao/checkstepchanged.php | 61 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100755 module/caselib/test/tao/checkstepchanged.php diff --git a/module/caselib/test/lib/caselib.unittest.class.php b/module/caselib/test/lib/caselib.unittest.class.php index 28cee26d85..15be04cb8a 100644 --- a/module/caselib/test/lib/caselib.unittest.class.php +++ b/module/caselib/test/lib/caselib.unittest.class.php @@ -310,4 +310,28 @@ class caselibTest return $result; } + + /** + * Test checkStepChanged method. + * + * @param array $oldSteps + * @param array $steps + * @access public + * @return bool|array + */ + public function checkStepChangedTest(array $oldSteps, array $steps): bool|array + { + global $tester; + $objectTao = $tester->loadTao('caselib'); + + $reflection = new ReflectionClass($objectTao); + $method = $reflection->getMethod('checkStepChanged'); + $method->setAccessible(true); + + $result = $method->invoke($objectTao, $oldSteps, $steps); + + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/caselib/test/tao/checkstepchanged.php b/module/caselib/test/tao/checkstepchanged.php new file mode 100755 index 0000000000..d69d5b8b49 --- /dev/null +++ b/module/caselib/test/tao/checkstepchanged.php @@ -0,0 +1,61 @@ +#!/usr/bin/env php +desc = '点击登录按钮'; +$step1->expect = '页面跳转到首页'; + +$step2 = new stdclass(); +$step2->desc = '输入用户名密码'; +$step2->expect = '验证通过'; + +$sameSteps1 = array(1 => $step1, 2 => $step2); +$sameSteps2 = array(1 => clone $step1, 2 => clone $step2); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($caselibTest->checkStepChangedTest($sameSteps1, $sameSteps2)) && p() && e('0'); // 步骤1:相同的步骤比较 + +// 准备不同描述的步骤数据 +$diffDescStep = clone $step1; +$diffDescStep->desc = '点击确认按钮'; +$diffSteps1 = array(1 => $diffDescStep, 2 => $step2); +r($caselibTest->checkStepChangedTest($sameSteps1, $diffSteps1)) && p() && e('1'); // 步骤2:步骤描述不同 + +// 准备不同期望的步骤数据 +$diffExpectStep = clone $step1; +$diffExpectStep->expect = '页面跳转到错误页'; +$diffSteps2 = array(1 => $diffExpectStep, 2 => $step2); +r($caselibTest->checkStepChangedTest($sameSteps1, $diffSteps2)) && p() && e('1'); // 步骤3:步骤期望结果不同 + +// 准备不同数量的步骤数据 +$diffCountSteps = array(1 => $step1); +r($caselibTest->checkStepChangedTest($sameSteps1, $diffCountSteps)) && p() && e('1'); // 步骤4:步骤数量不同 + +// 准备空步骤数据 +$emptySteps = array(); +r($caselibTest->checkStepChangedTest($sameSteps1, $emptySteps)) && p() && e('1'); // 步骤5:空步骤与非空步骤比较 \ No newline at end of file