Today I lost a lot of time investigating a stupid(aren’t they all?) issue with some failing tests on the build server. The strange thing was that when I ran the same tests locally, they always succeeded...what was going wrong?
Just for completeness, here is the test task configuration I was using:
Nothing special I would think. It was only when diving deeper into the build output that I discovered what was going wrong.
Here is the output that explains the problem:
2025-05-20T13:19:22.3855459Z vstest.console.exe
2025-05-20T13:19:22.3855564Z "D:\b\3\_work\210\s\IAM.Core.Tests\bin\Release\net6.0\IAM.Core.Tests.dll"
2025-05-20T13:19:22.3855657Z "D:\b\3\_work\210\s\IAM.Core.Tests\bin\Release\net8.0\IAM.Core.Tests.dll"
2025-05-20T13:19:22.3855761Z "D:\b\3\_work\210\s\Mestbank.Core.Tests\bin\Release\net6.0\Mestbank.Core.Tests.dll"
2025-05-20T13:19:22.3855857Z "D:\b\3\_work\210\s\Mestbank.Core.Tests\bin\Release\net8.0\Mestbank.Core.Tests.dll"
2025-05-20T13:19:22.3855962Z "D:\b\3\_work\210\s\Mestbank.Loket.Tests\bin\Release\net6.0\Mestbank.Loket.Tests.dll"
2025-05-20T13:19:22.3856057Z "D:\b\3\_work\210\s\Mestbank.Loket.Tests\bin\Release\net8.0\Mestbank.Loket.Tests.dll"
During the test discovery process, the test task discovers some older tests still compiled for .NET 6.0. These older tests are run as well but fail because the backend systems they interact with have changed.
Why is this happening? The main reason is because I had set the clean
settting to false:
As a consequence, old build results were not deleted and still available on the build server. As the test task uses a wildcard pattern to search for test files, it discovered not only the new tests but also the older tests still available on the build server.
The solution was easy. We changed the setting to true
and choose the All build directories
clean option: