@@ -2,22 +2,55 @@ parameters:
2
2
testAssembly : # NUnit test assembly to run
3
3
testFilter : # Filter used to select tests (NUnit test selection language, not dotnet test filter language)
4
4
testRunTitle : # Title of the test run
5
- testResultsTitle : # Title used to construct test results file name
5
+ retryFailedTests : true # Retry failed tests once
6
6
7
7
steps :
8
8
- pwsh : |
9
9
dotnet-test-slicer `
10
+ slice `
10
11
--test-assembly="${{ parameters.testAssembly }}" `
11
12
--test-filter="${{ parameters.testFilter }}" `
12
13
--slice-number=$(System.JobPositionInPhase) `
13
14
--total-slices=$(System.TotalJobsInPhase) `
14
15
--outfile="${{ parameters.testAssembly }}.runsettings"
15
16
displayName : Slice unit tests
16
17
17
- - template : run-nunit-tests.yaml
18
- parameters :
19
- useDotNet : true
20
- testRunTitle : ${{ parameters.testRunTitle }}-$(System.JobPositionInPhase)
21
- testAssembly : ${{ parameters.testAssembly }}
22
- dotNetTestExtraArgs : --settings "${{ parameters.testAssembly }}.runsettings"
23
- testResultsFile : ${{ parameters.testResultsTitle }}-$(System.JobPositionInPhase)-$(XA.Build.Configuration).xml
18
+ - ${{ if eq(parameters.retryFailedTests, 'false') }} :
19
+ # If we aren't using auto-retry logic, then this is just a simple template call
20
+ - template : run-nunit-tests.yaml
21
+ parameters :
22
+ testRunTitle : ${{ parameters.testRunTitle }}-$(System.JobPositionInPhase)
23
+ testAssembly : ${{ parameters.testAssembly }}
24
+ dotNetTestExtraArgs : --settings "${{ parameters.testAssembly }}.runsettings"
25
+
26
+ - ${{ if eq(parameters.retryFailedTests, 'true') }} :
27
+ # We need a custom dotnet test invocation here that does not trigger a task failure on failed tests
28
+ - pwsh : |
29
+ dotnet `
30
+ test `
31
+ ${{ parameters.testAssembly }} `
32
+ --settings "${{ parameters.testAssembly }}.runsettings" `
33
+ --logger trx --results-directory $(Agent.TempDirectory) `
34
+ -- NUnit.NumberOfTestWorkers=$(NUnit.NumberOfTestWorkers)
35
+ displayName: Run tests
36
+ ignoreLASTEXITCODE: true
37
+
38
+ - pwsh : |
39
+ dotnet-test-slicer `
40
+ retry `
41
+ --trx="$(Agent.TempDirectory)" `
42
+ --outfile="${{ parameters.testAssembly }}.runsettings"
43
+ displayName: Look for failed tests
44
+
45
+ # dotnet-test-slicer removed the failed tests from our results file, so it's safe to publish it now
46
+ - task : PublishTestResults@2
47
+ inputs :
48
+ testResultsFormat : VSTest
49
+ testResultsFiles : $(Agent.TempDirectory)/*.trx
50
+ testRunTitle : ${{ parameters.testRunTitle }}-$(System.JobPositionInPhase)
51
+
52
+ - template : run-nunit-tests.yaml
53
+ parameters :
54
+ testRunTitle : ${{ parameters.testRunTitle }}-$(System.JobPositionInPhase) (Auto-Retry)
55
+ testAssembly : ${{ parameters.testAssembly }}
56
+ dotNetTestExtraArgs : --settings "${{ parameters.testAssembly }}.runsettings"
0 commit comments