Demarch provided the correct answer in the comments, for visibility and whenever other people are stumbling upon this issue I will state it here (it took me way too long to figure this out):
Symptom:
VSTest.Console.exe is running tests twice or even multiple times when NUnit, Xunit or another testrunner is used than the native one.
Cause:
The path to the TestAdapter is not correctly (to $(Build.SourcesDirectory) for example) set or not present. This is letting the runner scan all folders for test adapters. When there are multiple present, all testadapters will start a testrun causing all tests run multiple times.
Solution:
Redirect the path to the testadapter to the folder your packages are in.
- If you run from the commandline set the following parameter for VSTest.Console.exe to something like this:
/TestAdapterPath:"{solutionfolder}\packages"
- If you run it in TFS, open the "Advanced Executions Options" section of the Visual Studio Test build step and set the following parameter to something like this:
$(Build.SourcesDirectory)\packages