Thème
Tests du client de bureau
Tests unitaires du client WPF : activation de licence, empreinte matérielle, détection de débogueur et résolution de l'hôte virtuel WebView2. 5 fichiers, 22 méthodes de test.
| Technologie | xUnit, FluentAssertions, Moq |
| Cible | net9.0-windows, comme le client |
| Référence projet | dotnet/client |
Structure
| Fichier | Méthodes | Ce qu'il éprouve |
|---|---|---|
Licensing/LicenseCheckerTests.cs | 5 | Un texte illisible est rapporté comme malformé sans lever ; une signature nue sans préfixe est rapportée comme format hérité ; un texte vide est rejeté ; la demande d'activation décrit bien cette machine et ce produit ; la validation ne lève jamais, quoi qui soit installé |
Licensing/LicenseIsBrandIndependentTests.cs | 3 | Les chemins de licence dépendent de l'application et non de la marque ; l'empreinte est stable d'une marque à l'autre ; le contenu d'une licence ne porte aucun champ de marque |
Licensing/HardwareInfoTests.cs | 7 | Valeur non vide, stable d'un appel à l'autre, longue de 64 caractères hexadécimaux, ne levant jamais, sûre en accès concurrent |
Licensing/SecurityVerifierTests.cs | 4 | Exécution sans débogueur attaché, appels successifs, structure statique de la classe |
VirtualHostTests.cs | 3 | L'URL de démarrage pointe sur l'hôte mappé, désigne la page d'entrée de l'application, et la racine locale se trouve à côté de l'exécutable |
Exécution
powershell
dotnet test dotnet/tests/client/client.tests.csprojMécanismes non évidents
L'empreinte fait 64 caractères, pas 16
HardwareInfo rend le condensé SHA-256 complet, soit 256 bits. Les tests vérifient explicitement cette longueur et l'alphabet hexadécimal.
Ces tests n'émettent aucune licence
LicenseCheckerTests n'éprouve que le refus : texte illisible, format hérité, texte vide. Aucune licence valide n'est fabriquée ici, faute de clé privée — la chaîne complète d'émission et de vérification est éprouvée dans dotnet/tests/tools, avec une paire RSA éphémère.
Deux tests de SecurityVerifier sortent d'eux-mêmes sous débogueur
EnsureSecureEnvironment termine le processus lorsqu'un débogueur est attaché : les deux tests qui l'appellent commencent donc par un return conditionné à Debugger.IsAttached. Ils sont alors rapportés comme réussis, sans avoir rien éprouvé.
Contraintes actives
| Contrainte | Conséquence si elle est ignorée |
|---|---|
HardwareInfo passe par WMI | Ces tests ne valent que sur Windows ; l'intégration continue les exécute sur son agent Windows |
Le projet cible net9.0-windows | Il ne se compile pas sur les agents Ubuntu |