Question: Code coverage and artifact build
See original GitHub issueI have an integration test suit and I parallelize its execution on mutliple test agents so it is much faster. Building solution on each test agent makes parallelization much less effective since the solution build itself takes considerable time (~10 minutes). The idea is to publish binary artifacts from one build agent and reuse these artifacts on all test agents.
It works only if binary artifacts include bin
and obj
of all projects in the solution. The size of all binary files is unfortunatelly more than 3 GB and downloading them to build agent takes nearly the same time as building the solution on each test agent which makes the approach useless.
It is enough to publish bin
and obj
(~300 MB) of all test projects to run all integration tests since it contains all required dll
and pdb
. But it is not enough for code coverage - resulting coverage.cobertura.xml
is empty.
The good part is that working copy path is the same on all build agents but also doesn’t seem to be enough. Also deterministic build (as described in this example) seems to be not enough and coverlet still produces empty coverage.cobertura.xml
.
Please, is there any way how to run tests and collect code coverage just from bin
/obj
files of test projects without the need of bin
/obj
from all solution projects?
EDIT:
Source code is available on all build and test agents on the same path.
Issue Analytics
- State:
- Created 2 years ago
- Reactions:1
- Comments:9
Top GitHub Comments
@JakubLinhart can you enable logs and check the reason why modules are not instrumented? https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/Troubleshooting.md
Yes, publishing from a single build agent and then running tests on multiple test agents.
I understand that PDB files are needed for the instrumentation. The PDB file is available on all test agents actually:
TestProject1\bin\Debug\net6.0\ClassLibrary1.pdb
.The question is why instrumentation doesn’t work when PDB is not available at this path:
ClassLibrary1\obj\Debug\netstandard2.1\ClassLibrary1.pdb
. Or in other words: Why coverlet cannot use PDB copied to test project output pathTestProject1\bin\Debug\net6.0\ClassLibrary1.pdb
.