• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 10/12/2018

Gérez les données dans le panneau Locals

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Comme pour la partie précédente, nous allons partir d’un test unitaire qui échoue : T_WebPageTask.CheckCreation. Allez dans le menu Test | Windows | Test Explorer et choisissez Run Selected test avec un clic-droit sur le test CheckCreation :

Echec du test CheckCreation
Échec du test CheckCreation

Le code en question est le suivant :

[TestMethod]
public void CheckCreation()
{
    // Arrange
    DateTime now = DateTime.Now;
    Thread.Sleep(1001);
    string name = "Video Relativité Restreinte";
    string url = "https://sciencepost.fr/2017/03/belle-animation-expliquer-relativite-deinstein/";
    ContentCategory category = ContentCategory.Science;

    // Act
    WebPageTask task = new WebPageTask(name, category, url);

    // Assert
    Assert.AreEqual(name, task.Name);
    Assert.AreEqual(category, task.Category);
    Assert.IsTrue(now < task.Start);
    Assert.AreEqual(url, task.Url.AbsolutePath);
}

De quoi allons-nous avoir besoin pour remonter à la source du problème ?

Un des Assert a échoué : cela signifie donc que la valeur d’une des propriétés n’est pas celle attendue. Il va donc falloir être capable de détecter lorsque la valeur d’une propriété a changé ou de facilement voir sa valeur lorsqu’on exécute le code pas à pas. Voyons comment le faire ensemble !

Nous allons commencer à déboguer ce test unitaire en mettant un point d'arrêt (comme nous l'avons vu dans la section précédente) au niveau de la création de la WebPageTask pour voir la valeur des différentes propriétés :

Posez un point d'arrêt sur la création de WebPageTask
Posez un point d'arrêt sur la création de WebPageTask

Une fois l'exécution suspendue, le panneau Locals apparaît automatiquement : il est rempli par le débogueur avec les variables de la méthode courante :

Voir les données avec le panneau Locals
Voir les données avec le panneau Locals

La première colonne contient leur nom, la seconde leur valeur et la dernière leur type.

Dans le cas d'une chaîne de caractères, il est même possible d'avoir un visualiseur dédié en fonction du type de chaîne, comme XML, HTML et JSON :

Différents visualiseurs de chaines de caractères
Différents visualiseurs de chaînes de caractères

Si l'on descend dans le code du constructeur de WebPageTask avec Step Into (F11), le contenu des Locals s'adapte en ne montrant que les paramètres passés au constructeur ainsi que l'object courant dont le nom est toujours this :

Adaptation automatique du contenu du panneau Locals
Adaptation automatique du contenu du panneau Locals

Si une des variables locales est d'un type complexe (c’est-à-dire contenant des champs ou des propriétés), un petit triangle indique qu'il est possible de les visualiser. Ici, en cliquant sur le triangle à côté de this, on peut voir que les propriétés de cette instance de WebPageTask n'ont pas encore été initialisées. C'est normal puisque nous sommes dans son constructeur :

Afficher les propriétés de WebPageTask
Afficher les propriétés de WebPageTask

Si l'on exécute l'appel à base par Step Over (F10), le contenu des propriétés ayant changé est mis à jour et garde une couleur rouge :

Les valeurs modifiées apparaissent en rouge
Les valeurs modifiées apparaissent en rouge

Dans notre cas, seul le Name a changé car la valeur par défaut de la catégorie était déjà Science.

Après avoir exécuté l'initialisation de l'URL, la valeur de propriété du même nom apparaît en rouge :

La valeur de la propriété Url devient rouge en étant modifiée
La valeur de la propriété URL devient rouge en étant modifiée

Il faut noter que l'expansion des structures de données complexes est possible, comme par exemple voir le contenu de la propriété URL :

Voir les propriétés d'un objet
Voir les propriétés d'un objet

Résumé

Ce chapitre vous a montré l’intérêt du panneau des Locals pour avoir l’état des variables en fonction d’où vous êtes dans la pile des appels. Vous verrez dans le prochain chapitre comment personnaliser l’affichage des instances de vos types afin de les visualiser plus facilement dans Visual Studio. ^^

Exemple de certificat de réussite
Exemple de certificat de réussite