Chapitre 0 : Introduction et configuration

Un code impeccable est essentiel à la réussite.

Ron Jeffries, " Clean Code : Un apprentissage ", 23 août 2017, ronjeffries.com.

Avant de commencer notre voyage dans le monde exigeant et gratifiant du développement piloté par les tests, nous devons nous assurer que nous disposons d'un environnement de développement fonctionnel. Ce chapitre est consacré à la préparation et à la mise en place.

Configuration de ton environnement de développement

Quel que soit le chemin de lecture que tu suivras (voir figure P-2), tu as besoin d'un environnement de développement propre pour suivre ce livre. Le reste du livre suppose que tu as configuré l'environnement de développement comme décrit dans cette section.

Important

Peu importe avec lequel de Go, JavaScript ou Python tu commences, configure ton environnement de développement comme décrit dans cette section.

Configuration commune

Structure des dossiers

Crée un dossier qui sera la racine de tout le code source que nous écrirons dans ce livre. Donne-lui un nom qui sera clair et sans ambiguïté pour toi dans quelques semaines, par exemple, tdd-project.

Sous ce dossier, crée un ensemble de dossiers comme suit :

tdd-project
├── go
├── js
└── py

Crée tous ces dossiers avant d'écrire la première ligne de code, même si tu prévois de suivre ce livre en plusieurs fois, une langue à la fois. La création de cette structure de dossiers offre les avantages suivants :

  1. Il permet de séparer les codes des trois langues tout en les gardant à proximité les uns des autres.

  2. Il garantit que la plupart des commandes de ce livre fonctionneront sans changement.

    • Les commandes qui traitent des noms de fichiers/dossiers entièrement qualifiés sont une exception - et ces commandes sont rares. L'une d'entre elles se trouve dans cette section.

  3. Il permet d'adopter facilement des fonctionnalités avancées, telles que l'intégration continue, dans les trois langues.

  4. Elle correspond à la structure des dossiers du dépôt de code qui l'accompagne. Cela peut être utile pour comparer et opposer ton code au fur et à mesure de son évolution.

Dans le reste de ce livre, le terme Racine du projet TDD est utilisé pour désigner le dossier racine contenant tout le code source - nommé tdd-project ci-dessus. Les dossiers nommés go, js, et py sont désignés par ces mêmes noms - la signification est claire d'après le contexte.

Important

Racine du projet TDD est le nom utilisé pour désigner le dossier contenant tout le code source développé dans ce livre. C'est le parent de trois dossiers nommés go, js, et py.

Déclare une variable d'environnement nommée TDD_PROJECT_ROOT et fixe sa valeur au nom complet du dossier racine du projet TDD. En faisant cela une fois dans chaque shell (ou mieux encore, une fois dans ton script d'initialisation du shell tel que le fichier .bashrc ), tu t'assures que toutes les commandes suivantes fonctionnent de manière transparente.

export TDD_PROJECT_ROOT=/fully/qualified/path/to/tdd-project

Par exemple, sur mon système macOS, le chemin complet du TDD_PROJECT_ROOT est /Users/saleemsiddiqui/code/github/saleem/tdd-project.

Editeur de texte ou IDE

Nous aurons besoin d'un éditeur de texte pour modifier les fichiers sources. Un environnement de développement intégré(IDE) peut être utile en fournissant un outil unique à l'intérieur duquel nous pouvons éditer, compiler et tester le code dans plusieurs langues. Cependant, c'est une question de choix et de préférence personnelle ; choisis ce qui te convient le mieux.

L'annexe A décrit les IDE plus en détail.

Coquille

Nous aurons besoin d'un shell - un interprète de ligne de commande - pour exécuter nos tests, examiner les résultats et effectuer d'autres tâches. Comme pour les IDE, les choix de shell sont nombreux et font souvent l'objet d'un partage d'opinions exubérant entre les développeurs. Ce livre suppose un shell de type Bash pour les commandes qui doivent être tapées. Sur la plupart - sinon tous les systèmes d'exploitation de type Unix (et sur macOS), un shell de type Bash est facilement disponible.

Pour Windows, des shells tels que Git BASH sont disponibles. Sur Windows 10, le sous-système Windows pour Linux offre une prise en charge native de l'interpréteur de commandes Bash, parmi de nombreux autres "goodies Linux". L'une ou l'autre de ces options, ou quelque chose de similaire, est suffisante (et nécessaire) pour suivre les exemples de code de ce livre.

Lafigure 0-1 montre un shell de type Bash avec les résultats d'une commande tapée dedans.

An iTerm shell on a macOS operating system
Figure 0-1. Un shell de type Bash, comme celui présenté ici, est nécessaire pour suivre les exemples de codage de ce livre

Git

Le chapitre 13 présente la pratique de l'intégration continue (CI) à l'aide des actions GitHub. Pour suivre le contenu de ce chapitre, nous devons créer un projet GitHub qui nous est propre et y pousser du code.

Git est un système de contrôle de version distribué open source. GitHub est une plateforme collaborative d'hébergement sur Internet qui permet aux gens de préserver et de partager entre eux le code source de leurs projets.

Important

Git est un système de contrôle de version distribué, gratuit et open source. GitHub est une plateforme de partage de code qui utilise Git.

Pour nous assurer que nous pouvons adopter l'intégration continue, nous allons faire quelques préparatifs maintenant et reporter une partie du travail au chapitre 13. Plus précisément, nous allons configurer le système de contrôle de version Git sur notre environnement de développement. Nous reporterons la création d'un projet GitHub au chapitre 13.

Tout d'abord, télécharge et installe le système de contrôle de version Git. Il est disponible pour macOS, Windows et Linux/Unix. Après l'avoir installé, vérifie qu'il fonctionne en tapant git --version dans une fenêtre de terminal et en appuyant sur Entrée. Tu devrais voir apparaître en réponse la version installée de Git, comme le montre la figure 0-2.

Verify that Git is installed on a shell
Figure 0-2. Vérifie que Git est installé en tapant git --version et en appuyant sur Entrée dans un shell.

Ensuite, nous allons créer un nouveau projet Git dans notre site TDD_PROJECT_ROOT. Dans une fenêtre de l'interpréteur de commandes, tape les commandes suivantes :

cd $TDD_PROJECT_ROOT
git init .

Cela devrait produire une sortie disant Initialized empty Git repository in /your/fully/qualified/project/path/.git/. Cela crée un tout nouveau (et actuellement vide) dépôt Git dans notre dossier TDD_PROJECT_ROOT. Nous devrions avoir ces dossiers sous notre dossier TDD-PROJECT-ROOT maintenant :

tdd-project
├── .git
├── go
├── js
└── py

Le dossier .git est utilisé par Git pour la tenue des comptes. Il n'est pas nécessaire de modifier son contenu.

Au fur et à mesure que nous écrirons du code source dans les chapitres suivants, nous validerons périodiquement nos modifications dans ce dépôt Git. Pour ce faire, nous utiliserons l'interface de ligne de commande (CLI) de Git.

Important

Dans la suite de ce livre, nous validerons fréquemment nos modifications de code dans le dépôt Git. Pour mettre cela en évidence, nous utiliserons l'icône Git Git.

Go

Nous devons installer la version 1.17 de Go pour suivre ce livre. Cette version est disponible au téléchargement pour différents systèmes d'exploitation.

Pour vérifier que Go est correctement installé, tape go version dans un shell et appuie sur Entrée. Cela devrait permettre d'imprimer le numéro de version de ton installation de Go. Voir la figure 0-3.

Verify that Go is working on a shell
Figure 0-3. Vérifie que Go fonctionne en tapant go version et en appuyant sur Entrée dans un shell.

Nous devons également définir quelques variables d'environnement spécifiques à Go :

  1. La variable d'environnement GO111MODULE doit être réglée sur on.

  2. La variable d'environnement GOPATH ne doit pas inclure le dossier TDD_PROJECT_ROOT ou tout autre dossier situé en dessous, comme le dossier go.

Exécute ces deux lignes de code dans le shell :

export GO111MODULE="on"
export GOPATH=""

Nous devons créer un fichier go.mod pour nous préparer à écrire du code. Voici les commandes qui te permettront de le faire :

cd $TDD_PROJECT_ROOT/go
go mod init tdd

Cela créera un fichier nommé go.mod dont le contenu sera :

module tdd

go 1.17

Pour tout développement de Go à partir de maintenant, assure-toi que le shell se trouve dans le dossier go sous TDD_PROJECT_ROOT.

Important

Pour le code Go de ce livre, veille à entrer d'abord dans cd $TDD_PROJECT_ROOT/go avant d'exécuter toute commande Go.

Un petit mot sur la gestion des paquets de Go.

La gestion des paquets de Go est en plein bouleversement. L'ancien style, qui utilisait la variable d'environnement GOPATH, est progressivement abandonné au profit du nouveau style qui utilise un fichier go.mod. Les deux styles sont largement incompatibles l'un avec l'autre.

Les deux variables d'environnement que nous avons définies ci-dessus, et le fichier go.mod dépouillé que nous avons généré, garantissent que les outils Go peuvent fonctionner correctement avec notre code source, en particulier lorsque nous créons des paquets. Nous créerons des paquets Go au chapitre 5.

JavaScript

Nous avons besoin de Node.js v14 ("Fermium") ou v16 pour suivre ce livre. Ces deux versions sont disponibles sur le site web de Node.js pour différents systèmes d'exploitation.

Pour vérifier que Node.js est correctement installé, tape node -v dans un shell et appuie sur Entrée. La commande devrait imprimer un message d'une ligne, indiquant la version de Node.js. Voir la figure 0-4.

Verify that Node.js is working on a shell
Figure 0-4. Vérifie que Node.js fonctionne en tapant node -v et en appuyant sur Entrée dans un shell.

Un petit mot sur les bibliothèques de test

Il existe plusieurs frameworks de test unitaire dans l'écosystème Node.js. Dans l'ensemble, ils sont excellents pour écrire des tests et faire du TDD. Cependant, ce livre ne les utilise pas tous. Son code utilise le paquetage assert NPM pour les assertions, et une simple classe avec des méthodes pour organiser les tests. Cette simplicité nous permet de nous concentrer sur la pratique et la sémantique du TDD plutôt que sur la syntaxe d'une bibliothèque en particulier. Le chapitre 6 décrit plus en détail l'organisation des tests. L 'annexe B énumère les cadres de test et les raisons détaillées pour lesquelles nous n'utilisons aucun d'entre eux.

Un autre petit mot, sur la gestion des paquets JavaScript.

À l'instar des frameworks de test, JavaScript dispose de nombreuses façons de définir les paquets et les dépendances. Ce livre utilise le style CommonJS. Le chapitre 6 aborde les autres styles : les styles ES6 et UMD sont présentés en détail avec le code source, et le style AMD plus brièvement, sans code source.

Python

Nous avons besoin de Python 3.10 pour suivre ce livre, qui est disponible sur le site Web de Python pour différents systèmes d'exploitation.

Le langage Python a subi des changements importants entre "Python 2" et "Python 3". Bien qu'une ancienne version de Python 3 (par exemple, 3.6) puisse fonctionner, toute version de Python 2 sera inadéquate pour suivre cet ouvrage.

Il est possible que Python 2 soit déjà installé sur ton ordinateur. Par exemple, de nombreux systèmes d'exploitation macOS (y compris Big Sur) sont livrés avec Python 2. Il n'est pas nécessaire (ni recommandé) de désinstaller Python 2 pour suivre ce livre ; en revanche, il faut s'assurer que la version utilisée est bien Python 3.

Pour éviter toute ambiguïté, ce livre utilise explicitement python3 comme nom de l'exécutable dans les commandes. Il est possible - mais aussi inutile - d'"aliaser" la commande python pour faire référence à Python 3.

Voici un moyen simple de savoir quelle commande tu dois taper pour t'assurer que Python 3 est utilisé. Tape python --version dans un shell et appuie sur Entrée. Si tu obtiens quelque chose qui commence par Python 3, tout va bien. Si tu obtiens quelque chose comme Python 2, tu devras peut-être taper explicitement python3 pour toutes les commandes de ce livre.

Lafigure 0-5 montre un environnement de développement avec à la fois Python 2 et Python 3.

Verify that Python 3 is working on a shell
Figure 0-5. Vérifie que Python 3 est installé et la commande que tu dois taper pour l'utiliser (python3 comme indiqué ici).
Important

Utilise Python 3 pour suivre le code de ce livre. N'utilise pas Python 2, cela ne fonctionnera pas.

Lafigure 0-6 présente un moyen mnémotechnique pour simplifier le rigmarole de la version Python qui précède !

For all the Python code in this book, remember this easy and cheesy rhyme! Python 2: boo! Python 3: glee!
Figure 0-6. Simple moyen mnémotechnique pour clarifier quelle version de Python est nécessaire pour ce livre !

Où nous sommes

Dans ce chapitre préliminaire, nous nous sommes familiarisés avec la chaîne d'outils dont nous aurons besoin pour commencer à écrire notre code en fonction des tests. Nous avons également appris à préparer notre environnement de développement et à vérifier qu'il est en état de marche.

Maintenant que nous savons de quoi parle ce livre, ce qu'il contient, comment le lire et surtout comment mettre en place notre environnement de travail pour le suivre, nous sommes prêts à résoudre notre problème, en ciselant une fonctionnalité à la fois, poussés par les tests. Nous commencerons ce voyage au chapitre 1. C'est parti !

Get Apprendre le développement piloté par les tests now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.