Bien démarrer avec Live Unit Testing dans Visual StudioGet started with Live Unit Testing in Visual Studio

Quand vous activez Live Unit Testing dans une solution Visual Studio, il décrit la couverture et l’état de vos tests.When you enable Live Unit Testing in a Visual Studio solution, Live Unit Testing visually depicts your test coverage and the status of your tests. Il exécute également dynamiquement des tests chaque fois que vous modifiez votre code.It also dynamically executes tests whenever you modify your code. Il vous notifie immédiatement quand des modifications ont endommagé votre code et indique les zones pour lesquelles des tests supplémentaires sont nécessaires.It provides immediate notification when changes have broken your code and indicates areas for which additional tests are needed.

Live Unit Testing peut être utilisé pour tester des solutions qui ciblent le .NET Framework ou .NET Core.Live Unit Testing can be used to test solutions that target either the .NET Framework or .NET Core. Dans ce didacticiel, vous découvrez comment utiliser Live Unit Testing en créant une bibliothèque de classes simple qui cible .NET Standard, et vous créez un projet MSTest qui cible .NET Core pour le tester.In this tutorial, you'll learn to use Live Unit Testing by creating a simple class library that targets the .NET Standard, and you'll create an MSTest project that targets .NET Core to test it.

La solution C# complète peut être téléchargée à partir du dépôt GitHub MicrosoftDocs/visualstudio-docs.The complete C# solution can be downloaded from the MicrosoftDocs/visualstudio-docs repo on GitHub.

PrérequisPrerequisites

Ce didacticiel nécessite que Visual Studio 2017 Enterprise Edition version 15.3 soit installé avec la charge de travail .NET Core 2.0.This tutorial requires that you've installed Visual Studio 2017 Enterprise Edition version 15.3 with the .NET Core 2.0 workload.

Créer la solution et le projet de bibliothèque de classesCreate the solution and the class library project

Commencez par créer une solution Visual Studio nommée UtilityLibraries, qui se compose d’un projet de bibliothèque de classes .NET Standard unique, StringLibrary.Begin by creating a Visual Studio solution named UtilityLibraries that consists of a single .NET Standard class library project, StringLibrary. Vous pouvez écrire StringLibrary en C# ou Visual Basic.You can write StringLibrary in either C# or Visual Basic.

La solution est simplement un conteneur pour un ou plusieurs projets.The solution is just a container for one or more projects. Pour créer la solution, ouvrez Visual Studio 2017 et procédez comme suit :To create the solution, open Visual Studio 2017 and do the following:

  1. Sélectionnez Fichier, Nouveau, Projet dans le menu Visual Studio du plus haut niveau.Select File, New, Project from the top-level Visual Studio menu.

  2. Dans la boîte de dialogue Nouveau projet, développez le nœud Autres types de projets et sélectionnez Solutions Visual Studio.In the New Project dialog, expand the Other Project Types node and select Visual Studio Solutions. Sélectionnez le modèle Nouvelle Solution dans le volet droit, puis entrez UtilityLibraries dans la zone de texte Nom, comme le montre l’illustration suivante :Select the Blank Solution template in the right pane and enter UtilityLibraries in the Name text box, as the following figure shows:

    Boîte de dialogue **Nouveau projet**

  3. Sélectionnez OK pour créer la solution.Select OK to create the solution.

Maintenant que vous avez créé la solution, vous créez une bibliothèque de classes nommée StringLibrary, qui contient plusieurs méthodes d’extension pour manipuler des chaînes.Now that you've created the solution, you'll create a class library named StringLibrary that contains a number of extension methods for working with strings.

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur la solution UtilityLibraries, puis sélectionnez Ajouter, Nouveau projet.In Solution Explorer, right-click on the UtilityLibraries solution and select Add, New Project.

  2. Dans la boîte de dialogue Ajouter un nouveau projet, sélectionnez le nœud C#, puis sélectionnez .NET Standard.In the Add New Project dialog, select the C# node, then select .NET Standard.

    Note

    Comme notre bibliothèque cible .NET Standard au lieu d’une implémentation particulière de .NET, elle peut être appelée à partir de toute implémentation .NET qui prend en charge cette version de .NET Standard.Because our library targets the .NET Standard rather than a particular .NET implementation, it can be called from any .NET implementation that supports that version of the .NET Standard. Pour plus d'informations, consultez .NET Standard.For more information, see .NET Standard.

  3. Sélectionnez le modèle Bibliothèque de classes (.NET Standard) dans le volet droit, puis entrez StringLibrary dans la zone de texte Nom, comme le montre l’illustration suivante :Select the Class Library (.NET Standard) template in the right pane, and enter StringLibrary in the Name text box, as the following figure shows:

    Boîte de dialogue **Ajouter un nouveau projet**

  4. Sélectionnez OK pour créer le projet.Select OK to create the project.

  5. Remplacez tout le code existant dans la fenêtre de code par le code suivant :Replace all of the existing code in the code window with the following code:

    using System;
    
    namespace UtilityLibraries
    {
        public static class StringLibrary
        {
            public static bool StartsWithUpper(this string s)
            {
                if (String.IsNullOrWhiteSpace(s))
                    return false;
    
                return Char.IsUpper(s[0]);
            }
    
            public static bool StartsWithLower(this string s)
            {
                if (String.IsNullOrWhiteSpace(s))
                    return false;
    
                return Char.IsLower(s[0]);
            }
    
            public static bool HasEmbeddedSpaces(this string s)
            {
                if (String.IsNullOrWhiteSpace(s))
                    return false;
    
                foreach (var ch in s.Trim())
                {
                    if (ch == ' ')
                        return true;
                }
                return false;
            }
        }
    }
    

    StringLibrary a trois méthodes statiques :StringLibrary has three static methods:

    • StartsWithUpper retourne true si une chaîne commence par un caractère majuscule ; sinon, elle retourne false.StartsWithUpper returns true if a string starts with an uppercase character; otherwise, it returns false.

    • StartsWithLower retourne true si une chaîne commence par un caractère minuscule ; sinon, elle retourne false.StartsWithLowerreturns true if a string starts with a lowercase character; otherwise, it returns false.

    • HasEmbeddedSpaces retourne true si une chaîne contient un espace incorporé ; sinon, elle retourne false.HasEmbeddedSpaces returns true if a string contains an embedded whitespace character; otherwise, it returns false.

  6. Sélectionnez Générer, Générer la solution dans le menu Visual Studio du plus haut niveau.Select Build, Build Solution from the top-level Visual Studio menu. Visual Studio doit normalement générer correctement votre bibliothèque.Visual Studio should successfully build your library.

Créer le projet de testCreate the test project

L’étape suivante consiste à créer le projet de test unitaire pour tester la bibliothèque StringLibrary.The next step is to create the unit test project to test StringLibrary library. Créez les tests unitaires en procédant comme suit :Create the unit tests by performing the following steps:

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur la solution UtilityLibraries, puis sélectionnez Ajouter, Nouveau projet.In Solution Explorer, right-click on the UtilityLibraries solution and select Add, New Project.

  2. Dans la boîte de dialogue Ajouter un nouveau projet, sélectionnez le nœud C#, puis sélectionnez .NET Core.In the Add New Project dialog, select the C# node, then select .NET Core.

    Note

    Vous ne devez pas nécessairement écrire vos tests unitaires dans le même langage que celui de votre bibliothèque de classes.You do not have to write your unit tests in the same language as your class library.

  3. Sélectionnez le modèle Projet de test unitaire (.NET Core) dans le volet droit, puis entrez StringLibraryTests dans la zone de texte Nom, comme le montre l’illustration suivante :Select the Unit Test Project (.NET Core) template in the right pane, and enter StringLibraryTests in the Name text box, as the following figure shows:

    Boîte de dialogue **Ajouter un nouveau projet** pour le projet de test unitaire

  4. Sélectionnez OK pour créer le projet.Select OK to create the project.

    Note

    Ce didacticiel de démarrage utilise Live Unit Testing avec le framework de test MSTest.This getting started tutorial uses Live Unit Testing with the MSTest test framework. Vous pouvez également utiliser les frameworks de test xUnit et NUnit.You can also use the xUnit and NUnit test frameworks.

  5. Le projet de test unitaire ne peut pas accéder automatiquement à la bibliothèque de classes qu’il teste.The unit test project can't automatically access the class library that it is testing. Vous donnez l’accès à la bibliothèque test en ajoutant une référence au projet de bibliothèque de classes.You give the test library access by adding a reference to the class library project. Pour cela, cliquez avec le bouton droit sur le projet StringLibraryTests et sélectionnez Ajouter, Référence.To do this, right-click on the StringLibraryTests project and select Add, Reference. Dans la boîte de dialogue Gestionnaire de références, vérifiez que l’onglet Solution est sélectionné, puis sélectionnez le projet StringLibrary, comme indiqué dans l’illustration suivante.In the Reference Manager dialog, make sure the Solution tab is selected, and select the StringLibrary project, as shown in the following figure.

    Boîte de dialogue **Gestionnaire de références**

  6. Remplacez le code de test unitaire réutilisable fourni par le modèle par le code suivant :Replace the boilerplate unit test code provided by the template with the following code:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using UtilityLibraries;
    
    namespace StringLibraryTest
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestStartsWithUpper()
            {
                // Tests that we expect to return true.
                string[] words = { "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва" };
                foreach (var word in words)
                {
                    bool result = word.StartsWithUpper();
                    Assert.IsTrue(result,
                                  $"Expected for '{word}': true; Actual: {result}");
                }
            }
    
            [TestMethod]
            public void TestDoesNotStartWithUpper()
            {
                // Tests that we expect to return false.
                string[] words = { "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                                   "1234", ".", ";", " " };
                foreach (var word in words)
                {
                    bool result = word.StartsWithUpper();
                    Assert.IsFalse(result,
                                   $"Expected for '{word}': false; Actual: {result}");
                }
            }
    
            [TestMethod]
            public void DirectCallWithNullOrEmpty()
            {
                // Tests that we expect to return false.
                string[] words = { String.Empty, null };
                foreach (var word in words)
                {
                    bool result = StringLibrary.StartsWithUpper(word);
                    Assert.IsFalse(result,
                                   $"Expected for '{(word == null ? "<null>" : word)}': " +
                                   $"false; Actual: {result}");
                }
            }
        }
    }
    
  7. Enregistrez votre projet en sélectionnant l’icône Enregistrer dans la barre d’outils.Save your project by selecting the Save icon on the toolbar.

  8. Comme le code des tests unitaires inclut certains caractères non-ASCII, Visual Studio affiche la boîte de dialogue pour nous avertir que certains caractères seront perdus si nous enregistrons le fichier à son format ASCII par défaut.Because the unit test code includes some non-ASCII characters, Visual Studio displays the following dialog to warn us that some characters will be lost if we save the file in its default ASCII format. Choisissez le bouton Enregistrer avec un autre encodage.Choose the Save with Other Encoding button.

    Choisir un encodage de fichier

  9. Dans la liste déroulante Encodage de la boîte de dialogue Options d’enregistrement avancées, choisissez Unicode (UTF-8 sans signature) - Page de codes 65001, comme illustré dans la figure suivante :In the Encoding drop-down list of the Advance Save Options dialog, choose Unicode (UTF-8 without signature) - Codepage 65001, as the following figure shows:

    Choix de l’encodage UTF-8

  10. Compilez le projet de test unitaire en choisissant Générer, Regénérer la solution dans le menu Visual Studio du plus haut niveau.Compile the unit test project by Build, Rebuild Solution from the top-level Visual Studio menu.

Vous avez créé une bibliothèque de classes, ainsi que quelques tests unitaires pour celle-ci.You've created a class library as well as some unit tests for it. Vous avez maintenant terminé les préliminaires nécessaires pour utiliser Live Unit Testing.You've now finished the preliminaries needed to use Live Unit Testing.

Activer Live Unit TestingEnable Live Unit Testing

Jusqu’ici, bien que vous ayez écrit les tests pour la bibliothèque de classes StringLibrary, vous ne les avez pas exécutés.So far, although you've written the tests for the StringLibrary class library, you haven't executed them. Live Unit Testing les exécute automatiquement une fois que vous l’activez.Live Unit Testing executes them automatically once you enable it. Pour cela, procédez comme suit :To do that, do the following:

  1. Si vous le souhaitez, sélectionnez la fenêtre de code qui contient le code pour StringLibrary.Optionally, select the code window that contains the code for StringLibrary. Il s’agit de class1.cs pour un projet C# ou de Class1.vb pour un projet Visual Basic.This is either class1.cs for a C# project or Class1.vb for a Visual Basic project. (Cette étape vous permet d’inspecter visuellement le résultat de vos tests et l’étendue de la couverture de votre code une fois que vous activez Live Unit Testing.)(This step let you visually inspect the result of your tests and the extent of your code coverage once you enable Live Unit Testing.)

  2. Sélectionnez Tester , Live Unit Testing, Démarrer dans le menu Visual Studio du plus haut niveau.Select Test, Live Unit Testing, Start from the top-level Visual Studio menu.

  3. Visual Studio démarre Live Unit Test, qui exécute automatiquement tous vos tests.Visual Studio starts Live Unit Test, which automatically runs all of your tests.

Quand il a terminé l’exécution de vos tests, l’Explorateur de tests affiche les résultats globaux et les résultats des tests individuels.When it finishes running your tests, Test Explorer displays both the overall results and the result of individual tests. En outre, la fenêtre de code affiche graphiquement la couverture de votre code de test et le résultat de vos tests.In addition, the code window graphically displays both your test code coverage and the result for your tests. Comme le montre l’illustration suivante, les trois tests ont été exécutés avec succès.As the following figure shows, all three tests have executed successfully. Elle montre également que nos tests ont couvert tous les chemins de code de la méthode StartsWithUpper, et que ces tests ont tous été exécutés avec succès (ce qui est indiqué par la coche verte, « ✓ »).It also shows that our tests have covered all code paths in the StartsWithUpper method, and those tests all executed successfully (which is indicated by the green check mark, "✓"). Elle montre enfin qu’aucune autre méthode dans StringLibrary ne dispose d’une couverture du code (indiquée par une ligne bleue, « ➖ »).Finally, it shows that none of the other methods in StringLibrary have code coverage (which is indicated by a blue line, "➖").

Vous pouvez également obtenir des informations plus détaillées sur la couverture des tests et sur les résultats des tests en sélectionnant une icône de couverture de code particulière dans la fenêtre de code.You can also get more detailed information about test coverage and test results by selecting a particular code coverage icon in the code window. Pour examiner ces informations détaillées, procédez comme suit :To examine this detail, do the following:

  1. Cliquez sur la marque de coche verte pour la ligne qui contient if (String.IsNullOrWhiteSpace(s)) dans la méthode StartsWithUpper.Click on the green check mark on the line that reads if (String.IsNullOrWhiteSpace(s)) in the StartsWithUpper method. Comme le montre l’illustration suivante, Live Unit Testing indique que trois tests couvrent cette ligne de code, et que tous ont été exécutés avec succès.As the following figure shows, Live Unit Testing indicates that three tests cover that line of code, and that all have executed successfully.

    Couverture du code pour l’instruction conditionnelle « if »

  2. Cliquez sur la marque de coche verte pour la ligne qui contient return Char.IsUpper(s[0]) dans la méthode StartsWithUpper.Click on the green check mark on the line that reads return Char.IsUpper(s[0]) in the StartsWithUpper method. Comme le montre l’illustration suivante, Live Unit Testing indique que seuls deux tests couvrent cette ligne de code, et que tous ont été exécutés avec succès.As the following figure shows, Live Unit Testing indicates that only two tests cover that line of code, and that all have executed successfully.

    Couverture du code pour l’instruction return

Le principal problème identifié par Live Unit Testing est une couverture du code incomplète.The major issue that Live Unit Testing identifies is incomplete code coverage. Vous le résolvez dans la section suivante.You'll address it in the next section.

Étendre la couverture des testsExpand test coverage

Dans cette section, vous étendez vos tests unitaires à la méthode StartsWithLower.In this section, you'll extend your unit tests to the StartsWithLower method. Quand vous faites cela, Live Unit Testing continue à tester dynamiquement votre code.While you do that, Live Unit Testing will dynamically continue to test your code.

Pour étendre la couverture du code à la méthode StartsWithLower, procédez comme suit :To extend code coverage to the StartsWithLower method, do the following:

  1. Ajoutez les méthodes TestStartsWithLower et TestDoesNotStartWithLower au fichier de code source de test de votre projet :Add the following TestStartsWithLower and TestDoesNotStartWithLower methods to your project's test source code file:

    // Code to add to UnitTest1.cs
    [TestMethod]
    public void TestStartsWithLower()
    {
        // Tests that we expect to return true.
        string[] words = { "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство" };
        foreach (var word in words)
        {
            bool result = word.StartsWithLower();
            Assert.IsTrue(result,
                          $"Expected for '{word}': true; Actual: {result}");
        }
    }
    
    [TestMethod]
    public void TestDoesNotStartWithLower()
    {
        // Tests that we expect to return false.
        string[] words = { "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва",
                           "1234", ".", ";", " "};
        foreach (var word in words)
        {
            bool result = word.StartsWithLower();
            Assert.IsFalse(result,
                           $"Expected for '{word}': false; Actual: {result}");
        }
    }
    
  2. Modifiez la méthode DirectCallWithNullOrEmpty en ajoutant le code suivant immédiatement après l’appel à la méthode Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsFalse.Modify the DirectCallWithNullOrEmpty method by adding the following code immediately after the call to the Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsFalse method.

    // Code to add to UnitTest1.cs
    result = StringLibrary.StartsWithLower(word);
    Assert.IsFalse(result,
                   $"Expected for '{(word == null ? "<null>" : word)}': " +
                   $"false; Actual: {result}");
    
  3. Live Unit Testing exécute automatiquement des tests nouveaux et modifiés quand vous modifiez votre code source.Live Unit Testing automatically executes new and modified tests when you modify your source code. Comme le montre la figure ci-après de l’Explorateur de tests, tous les tests, y compris les deux tests que vous avez ajoutés et celui que vous avez modifié, ont réussi.As the following figure of Test Explorer shows, all of the tests, including the two you've added and the one you've modified, have succeeded.

    L’Explorateur de tests après l’extension de la couverture des tests.

  4. Passez à la fenêtre qui contient le code source pour la classe StringLibrary.Switch to the window that contains the source code for the StringLibrary class. Live Unit Testing montre maintenant que la couverture de notre code est étendue à la méthode StartsWithLower.Live Unit Testing now shows that our code coverage is extended to the StartsWithLower method.

    Couverture du code pour la méthode StartsWithLower

Dans certains cas, des tests réussis dans l’Explorateur de tests peuvent apparaître en grisé. Ceci indique qu’un test est en cours d’exécution ou que le test n’a pas été réexécuté, car il n’y a pas eu de modification du code impactant le test depuis sa dernière exécution.In some cases, successful tests in Test Explorer may be grayed-out. That indicates that a test is currently executing, or that the test has not run again because there have been no code changes that would impact the test since it was last executed.

Jusqu’à présent, tous nos tests ont réussi.So far, all of our tests have succeed. Dans la section suivante, nous allons examiner comment vous pouvez gérer l’échec d’un test.In the next section, we'll examine how you can handle test failure.

Gestion de l’échec d’un testHandling a test failure

Dans cette section, vous découvrez comment vous pouvez utiliser Live Unit Testing pour identifier, dépanner et résoudre les échecs des tests.In this section, you'll explore how you can use Live Unit Testing to identify, troubleshoot, and address test failures. Vous faites cela en étendant la couverture de test à la méthode HasEmbeddedSpaces.You'll do this by expanding test coverage to the HasEmbeddedSpaces method.

  1. Ajoutez la méthode suivante à votre fichier de test :Add the following method to your test file:

    [TestMethod]
    public void TestHasEmbeddedSpaces()
    {
        // Tests that we expect to return true.
        string[] phrases = { "one car", "Name\u0009Description",
                             "Line1\nLine2", "Line3\u000ALine4",
                             "Line5\u000BLine6", "Line7\u000CLine8",
                             "Line0009\u000DLine10", "word1\u00A0word2" };
        foreach (var phrase in phrases)
        {
            bool result = phrase.HasEmbeddedSpaces();
            Assert.IsTrue(result,
                          $"Expected for '{phrase}': true; Actual: {result}");
        }
    }
    
  2. Quand le test s’exécute, Live Unit Testing indique que la méthode TestHasEmbeddedSpaces a échoué, comme le montre l’illustration suivante : L’Explorateur de tests signale l’échec d’un test.When the test executes, Live Unit Testing indicates that the TestHasEmbeddedSpaces method has failed, as the following figure shows: The Test Explorer reporting a failed test.

  3. Sélectionnez la fenêtre qui affiche le code de la bibliothèque.Select the window that displays the library code. Notez que Live Unit Testing a étendu la couverture du code à la méthode HasEmbeddedSpaces.Note that Live Unit Testing has expanded code coverage to the HasEmbeddedSpaces method. Il signale également l’échec d’un test en ajoutant une croix rouge « 🞩 » pour les lignes couvertes par des tests ayant échoué.It also reports the test failure by adding a red "🞩" to lines covered by failing tests.

  4. Placez le curseur sur la ligne avec la signature de méthode HasEmbeddedSpaces.Hover over the line with the HasEmbeddedSpaces method signature. Live Unit Testing affiche une info-bulle qui indique que la méthode est couverte par un test, comme le montre l’illustration suivante :Live Unit Testing displays a tooltip that reports that the method is covered by one test, as the following figure shows:

    Informations de Live Unit Testing sur un test ayant échoué.

  5. Sélectionnez le test TestHasEmbeddedSpaces qui a échoué.Select the failed TestHasEmbeddedSpaces test. Notez que Live Unit Testing vous offre plusieurs options, comme exécuter tous les tests, exécuter les tests sélectionnés, déboguer tous les tests et déboguer des tests sélectionnés, comme la figure suivante le montre :Note that Live Unit Testing gives you a number of options, such as running all tests, running the select tests, debugging all tests, and debugging selected tests, as the following figure shows:

    Options de Live Unit Testing pour un test ayant échoué.

  6. Sélectionnez Déboguer le test sélectionné pour déboguer le test qui a échoué.Select Debug Selected to debug the failed test.

  7. Visual Studio exécute le test en mode débogage.Visual Studio executes the test in debug mode. Notre test affecte chaque chaîne dans un tableau à une variable nommée phrase et la passe à la méthode HasEmbeddedSpaces.Our test assigns each string in an array to a variable named phrase and passes it to the HasEmbeddedSpaces method. L’exécution du programme s’interrompt et appelle le débogueur la première fois que l’expression d’assertion est false.Program execution pauses and invokes the debugger the first time the assert expression is false. La boîte de dialogue d’exception résultant de la valeur inattendue dans l’appel de méthode Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue est montrée dans la figure suivante.The exception dialog that results from the unexpected value in the Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue method call is shown in the following figure.

    Boîte de dialogue d’exception de Live Unit Testing.

    En outre, tous les outils de débogage fournis par Visual Studio sont disponibles pour nous aider à résoudre les problèmes de notre test qui a échoué, comme le montre la figure suivante :In addition, all of the debugging tools that Visual Studio provides are available to help us troubleshoot our failed test, as the following figure shows:

    Outils de débogage de Visual Studio.

    Notez que, dans la fenêtre Automatique, la valeur de la variable phrase est « Name\tDescription », qui est le deuxième élément du tableau.Note in the Autos window that the value of the phrase variable is "Name\tDescription", which is the second element of the array. La méthode de test attend que HasEmbeddedSpaces retourne true quand cette chaîne lui est passée ; au lieu de cela, elle retourne false.The test method expects HasEmbeddedSpaces to return true when it is passed this string; instead, it returns false. De toute évidence, elle ne reconnaît pas « \t », le caractère de tabulation, comme espace incorporé.Evidently, it does not recognize "\t", the tab character, as an embedded space.

  8. Sélectionnez Déboguer, Continuer, appuyez sur F5 ou cliquez sur le bouton Continuer dans la barre d’outils pour continuer l’exécution du programme de test.Select Debug, Continue, press F5, or click the Continue button on the toolbar to continue executing the test program. Comme une exception non gérée s’est produite, le test s’arrête.Because an unhandled exception occurred, the test terminates.

Ceci fournit suffisamment d’informations pour un examen préliminaire du bogue.This provides enough information for a preliminary investigation of the bug. TestHasEmbeddedSpaces, la routine de test, a fait une évaluation incorrecte ou HasEmbeddedSpaces ne reconnaît pas correctement tous les espaces incorporés.Either TestHasEmbeddedSpaces, the test routine, made an incorrect assumption, or HasEmbeddedSpaces does not correctly recognize all embedded spaces. Pour diagnostiquer et corriger le problème, commencez par la méthode StringLibrary.HasEmbeddedSpaces :To diagnose and correct the problem, start with the StringLibrary.HasEmbeddedSpaces method:

  1. Regardez la comparaison dans la méthode HasEmbeddedSpaces.Look at the comparison in the HasEmbeddedSpaces method. Elle considère qu’un espace incorporé est représenté par U+0020.It considers an embedded space to be U+0020. Le standard Unicode inclut plusieurs autres caractères espace.However, the Unicode Standard includes a number of other space characters. Ceci suggère que le code de la bibliothèque a été incorrectement testé pour un caractère espace.This suggests that the library code has incorrectly tested for a whitespace character.

  2. Remplacez la comparaison d’égalité par un appel à la méthode System.Char.IsWhiteSpace :Replace the equality comparison with a call to the System.Char.IsWhiteSpace method:

    if (Char.IsWhiteSpace(ch))
    
  3. Live Unit Testing réexécute automatiquement la méthode du test en échec et met à jour les résultats dans la fenêtre de code et dans l’Explorateur de tests, comme le montre la figure suivante :Live Unit Testing automatically reruns the failed test method and updates the results in the code window and in Test Explorer, as the following figure shows:

    Le test HasEmbeddedSpaces réussi.

Voir aussiSee also

Live Unit Testing dans Visual Studio Questions fréquentes concernant Live Unit TestingLive Unit Testing in Visual Studio Live Unit Testing Frequently Asked Questions