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