99BeforeAll {
1010 # 导入被测试的模块
1111 Import-Module " $PSScriptRoot \..\modules\network.psm1" - Force
12+
13+ # 预先获取一个被占用的端口,避免在每个测试中重复查询
14+ $script :occupiedPort = Get-NetTCPConnection | Where-Object { $_.State -eq " Listen" } | Select-Object - First 1 - ExpandProperty LocalPort
1215}
1316
14- Describe " Test-PortOccupation 函数测试" {
17+ Describe " Test-PortOccupation 函数测试" - Tag ' Network ' , ' Slow ' {
1518 Context " 端口占用检测" {
1619 It " 应该能够检测到已占用的端口" {
17- # 测试一个通常被占用的端口(如果存在)
18- # 这里使用一个动态方法来找到一个被占用的端口
19- $occupiedPort = Get-NetTCPConnection | Where-Object { $_.State -eq " Listen" } | Select-Object - First 1 - ExpandProperty LocalPort
20-
21- if ($occupiedPort ) {
22- $result = Test-PortOccupation - Port $occupiedPort
20+ if ($script :occupiedPort ) {
21+ $result = Test-PortOccupation - Port $script :occupiedPort
2322 $result | Should - Be $true
24- } else {
23+ }
24+ else {
2525 # 如果没有找到被占用的端口,跳过此测试
2626 Set-ItResult - Skipped - Because " 没有找到被占用的端口进行测试"
2727 }
@@ -42,19 +42,17 @@ Describe "Test-PortOccupation 函数测试" {
4242 }
4343}
4444
45- Describe " Get-PortProcess 函数测试" {
45+ Describe " Get-PortProcess 函数测试" - Tag ' Network ' , ' Slow ' {
4646 Context " 进程信息获取" {
4747 It " 应该能够获取占用端口的进程信息" {
48- # 找到一个被占用的端口
49- $occupiedPort = Get-NetTCPConnection | Where-Object { $_.State -eq " Listen" } | Select-Object - First 1 - ExpandProperty LocalPort
50-
51- if ($occupiedPort ) {
52- $result = Get-PortProcess - Port $occupiedPort
48+ if ($script :occupiedPort ) {
49+ $result = Get-PortProcess - Port $script :occupiedPort
5350 ($result ) | Should -Not - Be $null
54- $result.Port | Should - Be $occupiedPort
51+ $result.Port | Should - Be $script : occupiedPort
5552 $result.ProcessId | Should - BeGreaterThan 0
5653 $result.ProcessName | Should -Not - BeNullOrEmpty
57- } else {
54+ }
55+ else {
5856 Set-ItResult - Skipped - Because " 没有找到被占用的端口进行测试"
5957 }
6058 }
@@ -67,54 +65,51 @@ Describe "Get-PortProcess 函数测试" {
6765 }
6866
6967 It " 返回的对象应该包含所有必需的属性" {
70- # 找到一个被占用的端口
71- $occupiedPort = Get-NetTCPConnection | Where-Object { $_.State -eq " Listen" } | Select-Object - First 1 - ExpandProperty LocalPort
72-
73- if ($occupiedPort ) {
74- $result = Get-PortProcess - Port $occupiedPort
68+ if ($script :occupiedPort ) {
69+ $result = Get-PortProcess - Port $script :occupiedPort
7570 if ($result ) {
7671 $result.PSObject.Properties.Name | Should - Contain " Port"
7772 $result.PSObject.Properties.Name | Should - Contain " ProcessId"
7873 $result.PSObject.Properties.Name | Should - Contain " ProcessName"
7974 $result.PSObject.Properties.Name | Should - Contain " Path"
8075 $result.PSObject.Properties.Name | Should - Contain " CommandLine"
8176 }
82- } else {
77+ }
78+ else {
8379 Set-ItResult - Skipped - Because " 没有找到被占用的端口进行测试"
8480 }
8581 }
8682 }
8783}
8884
89- Describe " Wait-ForURL 函数测试" {
85+ Describe " Wait-ForURL 函数测试" - Tag ' Network ' , ' Slow ' {
9086 Context " URL 可达性测试" {
91- It " 应该能够检测到可达的URL" {
92- # 测试一个通常可达的URL(如果网络连接正常)
93- $result = Wait-ForURL - DevToolsUrl " http://www.google.com" - Timeout 10 - Interval 1
94- # 注意:这个测试可能因为网络环境而失败,所以我们不强制要求结果
87+ It " 应该返回布尔值类型" {
88+ # 测试函数返回值类型,使用快速超时和短间隔避免长时间等待
89+ $result = Wait-ForURL - DevToolsUrl " http://localhost:99999" - Timeout 1 - Interval 0.5
9590 $result | Should - BeOfType [bool ]
9691 }
9792
9893 It " 应该对不可达的URL返回false" {
99- # 使用一个不存在的本地地址
100- $result = Wait-ForURL - DevToolsUrl " http://localhost:99999" - Timeout 5 - Interval 1
94+ # 使用一个不存在的本地地址,快速超时和短间隔
95+ $result = Wait-ForURL - DevToolsUrl " http://localhost:99999" - Timeout 1 - Interval 0.5
10196 $result | Should - Be $false
10297 }
10398
10499 It " 应该正确处理超时" {
105- # 测试超时功能
100+ # 测试超时功能,使用更短的超时时间和间隔
106101 $startTime = Get-Date
107- $result = Wait-ForURL - DevToolsUrl " http://localhost:99998" - Timeout 3 - Interval 1
102+ $result = Wait-ForURL - DevToolsUrl " http://localhost:99998" - Timeout 1 - Interval 0.5
108103 $endTime = Get-Date
109104 $elapsed = ($endTime - $startTime ).TotalSeconds
110105
111106 $result | Should - Be $false
112- $elapsed | Should - BeGreaterOrEqual 3
113- $elapsed | Should - BeLessThan 5 # 允许一些误差
107+ $elapsed | Should - BeGreaterOrEqual 1
108+ $elapsed | Should - BeLessThan 2 # 允许一些误差
114109 }
115110
116111 It " 应该使用默认参数" {
117- # 测试默认参数
112+ # 测试默认参数,使用快速超时
118113 { Wait-ForURL - Timeout 1 } | Should -Not - Throw
119114 }
120115 }
0 commit comments