1
+ name : ' Test with .NET CLI'
2
+ author : ' Pete Sramek'
3
+ description : ' Run tests, collects code coverage, logs test results, uploads test artifacts'
4
+ inputs :
5
+ # Required
6
+
7
+ # Optional
8
+ dotnet_sdk_version :
9
+ description : ' .NET SDK version. Default: 9.x'
10
+ required : false
11
+ default : ' 9.x'
12
+ build-configuration :
13
+ description : ' Build configuration. Default: Release'
14
+ required : false
15
+ default : ' Release'
16
+ build-platform :
17
+ description : ' Build platform. Deafult: Any CPU'
18
+ required : false
19
+ default : ' Any CPU'
20
+ test-project-glob-pattern :
21
+ description : ' Search pattern for test projects. Default: **/*Tests.csproj'
22
+ required : false
23
+ default : |
24
+ **/*Tests.csproj
25
+ test-runsettings-path :
26
+ description : ' Path to the test runsettings file. Default: '''' '
27
+ required : false
28
+ default : ' '
29
+ test-result-logger :
30
+ description : ' Test result logger. Default: trx'
31
+ required : false
32
+ default : ' trx'
33
+ collect-code-coverage :
34
+ description : ' Collect code coverage. Default: true'
35
+ required : false
36
+ default : ' true'
37
+ code-coverage-output-format :
38
+ description : ' Code coverage output format. Default: cobertura'
39
+ required : false
40
+ default : ' cobertura'
41
+ upload-test-artifacts :
42
+ description : ' Upload test artifacts, Default: true'
43
+ required : false
44
+ default : ' true'
45
+ test-results-directory :
46
+ description : ' Search pattern for test artifacts. Default: ${{ runner.temp }}/test-results/'
47
+ required : false
48
+ default : |
49
+ '${{ runner.temp }}/test-results/'
50
+ test-artifacts-name :
51
+ description : ' Test artifacts name, Default: test-results'
52
+ required : false
53
+ default : ' test-results'
54
+
55
+ runs :
56
+ using : " composite"
57
+ steps :
58
+ - name : ' Checkout ${{ github.head_ref || github.ref }}'
59
+ uses : actions/checkout@v4
60
+
61
+ - name : ' Setup .NET ${{ inputs.dotnet_sdk_version }}'
62
+ uses : actions/setup-dotnet@v4
63
+ with :
64
+ dotnet-version : ${{ inputs.dotnet_sdk_version }}
65
+
66
+ - name : ' Test with .NET CLI'
67
+ shell : bash
68
+ env :
69
+ TRX_LOGGER_ARGS : " ${{ inputs.test-result-logger != '' && ' --report-trx' || '' }}"
70
+ RUN_SETTINGS_ARGS : " ${{ inputs.test-runsettings-path != '' && '--settings ${{ inputs.test-runsettings-path }}' || '' }}"
71
+ CODE_COVERAGE_ARGS : " ${{ inputs.collect-code-coverage == 'true' && '--coverage --coverage-output-format ${{ inputs.code-coverage-output-format }}' || '' }}"
72
+ run : dotnet test ${{ inputs.test-project-glob-pattern }} --configuration ${{ inputs.build-configuration }} /p:Platform="${{ inputs.build-platform }}" --verbosity normal -- ${{ env.CODE_COVERAGE_ARGS }} ${{ env.RUN_SETTINGS_ARGS }} --results-directory ${{ inputs.test-results-directory }}
73
+
74
+ - name : ' Upload test results'
75
+ if : ${{ inputs.upload-test-artifacts == 'true' }}
76
+ uses : actions/upload-artifact@v4
77
+ with :
78
+ name : ' ${{ inputs.test-artifacts-name }}'
79
+ path : ' ${{ inputs.test-results-directory }}*'
0 commit comments