web-dev-qa-db-fra.com

VSTest: un fichier de testsets ou un runets avec un ForcedLegacyMode défini sur true n'est pas pris en charge avec l'adaptateur MSTest V2. Aucun test n'est disponible

Comment utiliser .testsettings fichier exécutant des tests unitaires via vstest.console.exe? J'ai créé une solution de studio visuel vide, créé un projet de test d'unité vide, ajouté Local.testsettings fichier comme élément de solution.

[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>

Tout va bien lorsque je lance mes tests avec la commande suivante:

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

La commande ci-dessous donne une erreur.

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

Avertissement: un fichier de testsets ou un runets avec un ForcedLegacyMode défini sur true n'est pas pris en charge avec l'adaptateur MSTest V2. Aucun test n'est disponible dans [chemin]\UnitTestProject1.dll. Assurez-vous que le découvreur de test et les exécuteurs sont enregistrés et que les paramètres de version de la plate-forme et du framework sont appropriés et réessayez.

De plus, le chemin d'accès aux adaptateurs de test peut être spécifié à l'aide de la commande/TestAdapterPath. Exemple/TestAdapterPath :.

J'ai donc ajouté /TestAdapterPath:[project path/bin/Debug] paramètre. Le Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll avec découvreur et exécuteur se trouve ici. Mais j'ai eu la même erreur sans la dernière phrase sur la spécification de l'adaptateur de test.

Je me demandais si quelqu'un pouvait résoudre ce problème.

9
Joseph Katzman

La solution consiste à utiliser Microsoft.VisualStudio.QualityTools.UnitTestFramework au lieu de Microsoft.VisualStudio.TestPlatform.TestFramework qui est ajouté à votre projet de test unitaire par Visual Studio par défaut. Vous pouvez donc supprimer deux packages via NuGet. Vous devez supprimer MSTest.TestAdapter et MSTest.TestFramework et installez Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated. Vos tests unitaires seront découverts après ces étapes.

Vous pouvez également lire l'article utile suivant sur le framework de test MSTest V2 .

11
Joseph Katzman

J'ai eu le même problème et je l'ai résolu de la manière suivante:

  1. Allez à Test -> Paramètres de test

  2. Décochez la case \..\..projectTestSettings.testsettings fichier

  3. Relancez les tests

30