问题
I am executing a batch script in Jenkins Job.
C:\Users\Administrator\AppData\Local\Apps\OpenCover\OpenCover.Console.exe "-target:C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" "-targetargs:C:\Test\src\Example.Tests\bin\Debug\example.Tests.dll --where "cat == Unit" -register:Administrator
I used Filter as well but no use.
C:\Users\Administrator\AppData\Local\Apps\OpenCover\OpenCover.Console.exe "-target:C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" "-targetargs:C:\Test\src\Example.Tests\bin\Debug\example.Tests.dl -filter:"+[Unit]*" -register:Administrator
This batch command has a where condition (--where "cat == Unit"). When I execute this I am getting below error.
Test Files
C:\Test\src\Example.Tests\bin\Debug\example.Tests.dll
==
Unit
Test Filters
Where: cat
Unexpected token '' at position 3 in selection expression.
Committing...
No results, this could be for a number of reasons. The most common reasons are:
1) missing PDBs for the assemblies that match the filter please review the
output file and refer to the Usage guide (Usage.rtf) about filters.
2) the profiler may not be registered correctly, please refer to the Usage
guide and the -register switch.
Because of this error I am not able to get Code Coverage. Please suggest.I found below link but I am unable to get this done.
https://github.com/codecov/example-csharp
updated error Logs.
Incorrect Arguments: The argument 'cat == Unit' is not recognised
Usage:
["]-target:<target application>["]
[["]-targetdir:<target directory>["]]
[["]-searchdirs:<additional PDB directory>[;<additional PDB directory>][;<additional PDB directory>]["]]
[["]-targetargs:<arguments for the target process>["]]
[-register[:user]]
[["]-output:<path to file>["]]
[-mergeoutput
[["]-filter:<space separated filters>["]]
[["]-filterfile:<path to file>["]]
[-nodefaultfilters]
[-regex]
[-mergebyhash]
[-showunvisited]
[-returntargetcode[:<opencoverreturncodeoffset>]]
[-excludebyattribute:<filter>[;<filter>][;<filter>]]
[-excludebyfile:<filter>[;<filter>][;<filter>]]
[-coverbytest:<filter>[;<filter>][;<filter>]]
[["]-excludedirs:<excludedir>[;<excludedir>][;<excludedir>]["]]
[-hideskipped:File|Filter|Attribute|MissingPdb|All,[File|Filter|Attribute|MissingPdb|All]]
[-log:[Off|Fatal|Error|Warn|Info|Debug|Verbose|All]]
[-service[:byname]]
[-servicestarttimeout:<minutes+seconds e.g. 1m23s>
[-communicationtimeout:<integer, e.g. 10000>
[-threshold:<max count>]
[-enableperformancecounters]
[-skipautoprops]
[-oldStyle]
or
-?
or
-version
For further information on the command line please visit the wiki
https://github.com/OpenCover/opencover/wiki/Usage
Filters:
Filters are used to include and exclude assemblies and types in the
profiler coverage; see the Usage guide. If no other filters are supplied
via the -filter option then a default inclusive all filter +[*]* is
applied.
Logging:
Logging is based on log4net logging levels and appenders - defaulting
to a ColouredConsoleAppender and INFO log level.
Notes:
Enclose arguments in quotes "" when spaces are required see -targetargs.
回答1:
This looks like nonsense
"-targetargs:C:\Test\src\Example.Tests\bin\Debug\example.Tests.dl -filter:"+[Unit]*"
Something like this should work better
"-targetargs:C:\Test\src\Example.Tests\bin\Debug\example.Tests.dll" -filter:"+[*Unit]*"
I recommend you to try powershell intstead of batch files
Here is the sample script: https://github.com/rpokrovskij/opencover4vs.ps1
Put it to solution folder, modify first line , and I hope it will work for you, without additional changes.
来源:https://stackoverflow.com/questions/42691814/unexpected-token-at-position-3-in-selection-expression