已关闭
sync ontextselectionchange同步 #78380
duanshaofei创建于 2025年12月26日关闭于 2月4日
sync ontextselectionchange同步 #78380
已关闭
共 1 个文件变更+8-0
| @@ -2108,6 +2108,8 @@ HWTEST_F(WebSelectOverlayTest, RunQuickMenu_003, TestSize.Level1) | |||
| 2108 | stack->Push(frameNode); | 2108 | stack->Push(frameNode); |
| 2109 | auto webPattern = frameNode->GetPattern<WebPattern>(); | 2109 | auto webPattern = frameNode->GetPattern<WebPattern>(); |
| 2110 | EXPECT_NE(webPattern, nullptr); | 2110 | EXPECT_NE(webPattern, nullptr); |
| 2111 | + webPattern->OnModifyDone(); | ||
| 2112 | + ASSERT_NE(webPattern->delegate_, nullptr); | ||
| 2111 | MockPipelineContext::SetUp(); | 2113 | MockPipelineContext::SetUp(); |
| 2112 | WebSelectOverlay overlay(webPattern); | 2114 | WebSelectOverlay overlay(webPattern); |
| 2113 | std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> params = | 2115 | std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> params = |
| @@ -2141,6 +2143,8 @@ HWTEST_F(WebSelectOverlayTest, RunQuickMenu_004, TestSize.Level1) | |||
| 2141 | stack->Push(frameNode); | 2143 | stack->Push(frameNode); |
| 2142 | auto webPattern = frameNode->GetPattern<WebPattern>(); | 2144 | auto webPattern = frameNode->GetPattern<WebPattern>(); |
| 2143 | EXPECT_NE(webPattern, nullptr); | 2145 | EXPECT_NE(webPattern, nullptr); |
| 2146 | + webPattern->OnModifyDone(); | ||
| 2147 | + ASSERT_NE(webPattern->delegate_, nullptr); | ||
| 2144 | MockPipelineContext::SetUp(); | 2148 | MockPipelineContext::SetUp(); |
| 2145 | WebSelectOverlay overlay(webPattern); | 2149 | WebSelectOverlay overlay(webPattern); |
| 2146 | std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> params = | 2150 | std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> params = |
| @@ -6430,6 +6434,8 @@ HWTEST_F(WebSelectOverlayTest, RunQuickMenu_005, TestSize.Level1) | |||
| 6430 | stack->Push(frameNode); | 6434 | stack->Push(frameNode); |
| 6431 | auto webPattern = frameNode->GetPattern<WebPattern>(); | 6435 | auto webPattern = frameNode->GetPattern<WebPattern>(); |
| 6432 | ASSERT_NE(webPattern, nullptr); | 6436 | ASSERT_NE(webPattern, nullptr); |
| 6437 | + webPattern->OnModifyDone(); | ||
确保TDD运行正确,且无虚判断 ![]() ![]() | |||
| 6438 | + ASSERT_NE(webPattern->delegate_, nullptr); | ||
| 6433 | MockPipelineContext::SetUp(); | 6439 | MockPipelineContext::SetUp(); |
| 6434 | WebSelectOverlay overlay(webPattern); | 6440 | WebSelectOverlay overlay(webPattern); |
| 6435 | std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> params = | 6441 | std::shared_ptr<OHOS::NWeb::NWebQuickMenuParams> params = |
| @@ -6471,6 +6477,8 @@ HWTEST_F(WebSelectOverlayTest, RunQuickMenu_006, TestSize.Level1) | |||
| 6471 | stack->Push(frameNode); | 6477 | stack->Push(frameNode); |
| 6472 | auto webPattern = frameNode->GetPattern<WebPattern>(); | 6478 | auto webPattern = frameNode->GetPattern<WebPattern>(); |
| 6473 | ASSERT_NE(webPattern, nullptr); | 6479 | ASSERT_NE(webPattern, nullptr); |
| 6480 | + webPattern->OnModifyDone(); | ||
| 6481 | + ASSERT_NE(webPattern->delegate_, nullptr); | ||
| 6474 | MockPipelineContext::SetUp(); | 6482 | MockPipelineContext::SetUp(); |
| 6475 | WebSelectOverlay overlay(webPattern); | 6483 | WebSelectOverlay overlay(webPattern); |
| 6476 | g_isLongPress = false; | 6484 | g_isLongPress = false; |


🤖 AI 代码检视意见(回复本评论可解决检视意见,点击被检视代码行左侧的小头像可收起检视意见)
🟡 测试代码中存在重复的设置逻辑
位置:
L2111-L2112| 严重程度: Medium❓ 问题描述
在
RunQuickMenu_003,RunQuickMenu_004,RunQuickMenu_005, 和RunQuickMenu_006四个测试用例中,都添加了相同的两行代码:webPattern->OnModifyDone();和ASSERT_NE(webPattern->delegate_, nullptr);。这种重复违反了DRY(Don't Repeat Yourself)原则。如果未来测试的初始化步骤发生变化(例如,需要调用另一个初始化函数,或需要增加更多的断言),开发者必须记得在所有四个地方进行修改,这很容易导致不一致,并增加了维护负担和引入错误的几率。💡 修复建议
建议将这两行重复代码提取到一个辅助函数中,或者如果它们适用于所有或大部分
WebSelectOverlayTest的用例,可以将它们移动到测试夹具的SetUp()方法中。这样可以集中管理初始化逻辑,提高代码的可维护性和可读性。// Example refactoring using a helper function within the test class RefPtr<WebPattern> WebSelectOverlayTest::CreateInitializedWebPattern(const RefPtr<FrameNode>& frameNode) { auto webPattern = frameNode->GetPattern<WebPattern>(); ASSERT_NE(webPattern, nullptr); webPattern->OnModifyDone(); ASSERT_NE(webPattern->delegate_, nullptr); return webPattern; } // Usage in the test HWTEST_F(WebSelectOverlayTest, RunQuickMenu_003, TestSize.Level1) { // ... create frameNode // stack->Push(frameNode); auto webPattern = CreateInitializedWebPattern(frameNode); // Replaces the 4 original lines MockPipelineContext::SetUp(); WebSelectOverlay overlay(webPattern); // ... }