Search code examples
visual-studiovstestvstest.console.exe

VSTest: A testsettings file or a runsettings with a ForcedLegacyMode set to true is not supported with the MSTest V2 Adapter. No test is available


How to use .testsettings file running unit tests via vstest.console.exe? I created empty visual studio solution, created empty unit test project, added Local.testsettings file as a solution item.

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {

    }
}

enter image description here

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local" id="1109524d-9809-4423-b7fa-fad429ebfd8d" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>These are default test settings for a local test run.</Description>
  <Deployment enabled="false" />
  <Execution hostProcessPlatform="MSIL">
    <TestTypeSpecific>
      <UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
        <AssemblyResolution>
          <TestDirectory useLoadContext="true" />
        </AssemblyResolution>
      </UnitTestRunConfig>
    </TestTypeSpecific>
    <AgentRule name="LocalMachineDefaultRole">
    </AgentRule>
  </Execution>
  <Properties />
</TestSettings>

Everything is ok when I run my tests with following command:

>> "[path to vstest]/vstest.console.exe" [path to project]\UnitTestProject1.dll

The command below gives an error.

"[path to vstest]/vstest.console.exe" [path to project]\UnitTestProject1.dll /Settings:[path to settings file]\Local.testsettings

Warning : A testsettings file or a runsettings with a ForcedLegacyMode set to true is not supported with the MSTest V2 Adapter. No test is available in [path]\UnitTestProject1.dll. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.

Additionally, path to test adapters can be specified using /TestAdapterPath command. Example /TestAdapterPath:.

So I added /TestAdapterPath:[project path/bin/Debug] parameter. The Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll with discoverer and executor is situated here. But I got the same error without the last sentence about specifying test adapter.

I was wondering if someone could solve this problem.


Solution

  • The solution is to use Microsoft.VisualStudio.QualityTools.UnitTestFramework instead of Microsoft.VisualStudio.TestPlatform.TestFramework which is added to your unit test project by Visual Studio by default. So you can remove two packages via NuGet. You should delete MSTest.TestAdapter and MSTest.TestFramework and install Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated. Your unit tests will be discovered after these steps.

    Also you can read the following useful article about test framework MSTest V2.