-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRun-AllRCLUnitTestCases.ps1
149 lines (127 loc) · 5.87 KB
/
Run-AllRCLUnitTestCases.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Run Get-ExecutionPolicy. If it returns Restricted,
# then run Set-ExecutionPolicy AllSigned
# or Set-ExecutionPolicy Bypass -Scope Process.
$policy = Get-ExecutionPolicy
if ($policy -eq "Restricted" -or $policy -eq "RemoteSigned")
{
Set-ExecutionPolicy Bypass -Scope Process -Force
}
# Import NAV RCL API module
Get-module -name "NAVRCLAPI" | Remove-Module
Import-Module (Join-Path $PSScriptRoot "NAVRCLAPI.psm1") -Force
# Check if Pester is not installed, if no, we need to install it firstly
$PesterVersion = Get-Module -ListAvailable -Name "Pester" | Where-Object { $_.Version.Major -ge 4 }
if (-Not($PesterVersion))
{
if ([System.Environment]::OSVersion.Version.Major -ge 10)
{
Install-Module Pester -Force -SkipPublisherCheck
}
else {
Invoke-Expression ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
choco install pester -Force
}
}
# Update the version, build date, language
$buildDate = "2018-8"
#Dynamics365BusinessCentral
$versions = "365" #"NAV2018", "NAV2016", "NAV2015",
$languages = "W1" #"ES", "FI", "FR", "GB", "IS", "IT", "NA", "NL", "NO", "NZ", "RU", "SE", "W1"
#, "ES", "FI", "FR", "GB","CH", "CZ", "DE", "DK", "ES", "FI", "FR", "GB", "IS", "IT", "NA", "NL", "NO", "NZ", "RU", "SE", "W1", "AT","AU", "BE"
# Please update your database intance name like NAVDEMO22, NAVDEMO33
$DatabaseInstance = "NAVDEMO"
$reportPath = Join-Path $env:HOMEDRIVE "NAVReports"
if (-Not(Test-Path $reportPath)) {
$null = New-Item -ItemType Directory $reportPath -Force
}
$reportFile = Join-Path $reportPath "RCLReport.xml"
$RTMDatabaseName = "NAVRTMDB"
$NAVServerServiceAccount = "NT AUTHORITY\NETWORK SERVICE"
$Tags = @{Clean = "CleanEnvironment"; Setup = "NAVSetup"; UTC = "UnitTestCase"}
$DatabaseServer = "localhost"
# Call invoke-pester to run all Unit Test cases
Set-Location $PSScriptRoot
$setupTestsPath = Join-Path $PSScriptRoot "Tests\RCL.Tests.ps1"
Write-Log "Start to batch run all unit test cases"
foreach($version in $versions)
{
foreach($language in $languages)
{
# update the region format
Update-RegionalFormat $language
#run setup test cases
Write-Log "Run NAV Setup test cases"
$scriptParam = @{
Path = $setupTestsPath
Parameters = @{
Version = $version
Language= $language
DatabaseServer = $DatabaseServer
DatabaseInstance = $DatabaseInstance
RTMDatabaseName = $RTMDatabaseName
NAVServerServiceAccount = $NAVServerServiceAccount
}
}
# report path
$reportFile = Join-Path $reportPath "RCLReport-$Version-$language.xml"
Write-Log "Starting to clean NAV test environment"
$cleanUTs = Invoke-Pester -Script $scriptParam -Tag $Tags.Clean -PassThru -OutputFile $reportFile -OutputFormat NUnitXml
Write-Log "Successfully clean NAV test environment"
if($cleanUTs.FailedCount -eq 0)
{
Write-Log "Starting Install and configure Dynamics$Version"
$failedUTs = Invoke-Pester -PassThru -Script $scriptParam -Tag $Tags.Setup -OutputFile $reportFile -OutputFormat NUnitXml
if($failedUTs.FailedCount -gt 0){
Write-Error "Fail to setup NAV for Dynamics$version with $language " -ErrorAction Stop
}
else {
Write-Log "Successfully Install and configure Dynamics$Version"
Write-Log "Starting to run case for Dynamics$version with $language"
Invoke-Pester -Script $scriptParam -Tag $Tags.UTC -OutputFile $reportFile -OutputFormat NUnitXml
Write-Log "Completed to run case for Dynamics$version with $language "
#Send email
$reportParm = @{
ReportPath = $reportFile
Version = $version
Language= $language
BuildDate = $buildDate
}
Send-UnitTestResult @reportParm
}
}
else
{
Write-Log "Clean NAV test environment for Dynamics$version with $language"
}
}
}
Write-Log "Completed to batch run all unit test cases"
# Generate HTML report by using tool ReportUnit
$reportUnitPath = Join-Path $PSScriptRoot "External"
Push-Location $reportUnitPath
& .\ReportUnit1-5.exe $reportPath
Pop-Location
# SIG # Begin signature block
# MIID7QYJKoZIhvcNAQcCoIID3jCCA9oCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUpRSwv977Q4011TDURLRiOtAt
# aMugggINMIICCTCCAXagAwIBAgIQqWHUCc2qlYRIhWgVfe9FeDAJBgUrDgMCHQUA
# MBYxFDASBgNVBAMTC05BVlRvb2wyMDE4MB4XDTE4MDkyNzA1MTU1MloXDTM5MTIz
# MTIzNTk1OVowFjEUMBIGA1UEAxMLTkFWVG9vbDIwMTgwgZ8wDQYJKoZIhvcNAQEB
# BQADgY0AMIGJAoGBAJZ2F7ujZeaqFKfQFcGJV5TrkkaIkVUOzXB5s8M8nn+S/lFq
# 9UqOb5wN8LGDLvXh4N09tTEuH0QWRzyObGjVTmhj9GoMVOGvA1GqEo8AINaEVDJM
# 8HTbc/bGIsU7fyQGWQC6xsn/fdPAjBRN8EtL01zAFazHDRNK8di9punI0xN1AgMB
# AAGjYDBeMBMGA1UdJQQMMAoGCCsGAQUFBwMDMEcGA1UdAQRAMD6AEFKLZpIxPZgC
# 01AIS3DKkUKhGDAWMRQwEgYDVQQDEwtOQVZUb29sMjAxOIIQqWHUCc2qlYRIhWgV
# fe9FeDAJBgUrDgMCHQUAA4GBAISM3Wm5pn7XxkEYOW5a3qFOh51xh75/nREYeVgu
# jQpRzYzEW6aFcyDHwYtrrUlrv2wW1isaRR8S02Q44hmgn8jCG3a7NAsE04CNO93k
# k7RvTqI7hqRcmNoCHn+C1G2KiC4knMrvADOkKKAHdGI92XkXoovXQHVya1UffIoL
# at7mMYIBSjCCAUYCAQEwKjAWMRQwEgYDVQQDEwtOQVZUb29sMjAxOAIQqWHUCc2q
# lYRIhWgVfe9FeDAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKA
# ADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYK
# KwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQU2TK+MRviIt878zB/MFdI6ph2Ge0w
# DQYJKoZIhvcNAQEBBQAEgYBHGIXb6q9BXguAdKLfeQSNLvaASlDeXkenR4+9XxGo
# cXT8O3B4C7k5BPcIfrv69DsiQmzEavblmr+vjq6YZAa14X28ah3iIauRw6NMJPkF
# MKmjkOuuuP4nKYEDP1lyQb53UtUJbWUyBqC1XoR/XUFvpQ2eqN1HLEeH3tVhLYPs
# xw==
# SIG # End signature block