Est-il possible d'exécuter l'un des tests dans une suite de tests sous un compte utilisateur spécifique? J'ai besoin de simuler d'une manière ou d'une autre un problème de privilèges d'utilisateur.
Réponses
Trop de publicités?J'ai consolidé les points clés dans une seule réponse et fourni un aperçu des étapes impliquées.
J'ai également ajouté des informations sur l'utilisation des nouveaux tests+runneurs "NUnit-Lite" de NUnit 3, et sur l'utilisation du Planificateur de tâches Windows comme un mécanisme simple pour exécuter le(s) test(s) sous le compte utilisateur.
La réponse de Darin Dimitrov est globalement juste, mais quelques points excellents sont enfouis dans les commentaires, et certaines personnes pourraient souhaiter davantage de guidance sur la mise en place. De plus, NUnit-Lite n'était pas disponible quand il a écrit sa réponse.
Partie 1: Placez les tests qui doivent être exécutés sous le compte utilisateur spécifique dans leur propre assembly séparé. Étapes approximatives:
-
Par exemple, dans Visual Studio, vous sélectionneriez Fichier/Nouveau Projet, et sélectionneriez le modèle de projet NUnit (pour Framework ou .NET Core, selon le cas), nommez le projet de manière appropriée.
-
Déplacez le code des tests spécifiques concernés dans le nouvel assembly que vous venez de créer. Faites en sorte que l'assembly se compile et s'exécute, et donner les résultats attendus avec le compte sous lequel vous êtes connecté dans Visual Studio. Ne vous inquiétez pas des autres comptes utilisateurs pour le moment.
-
Option: Utilisez l'approche d'empaquetage du testeur unique EXE de NUnit-Lite, nouvelle dans NUnit 3, comme documenté ici: https://docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html
Partie 2: Déployez l'assembly de test à l'endroit où vous l'exécuterez, afin de pouvoir utiliser le programme nunit-console.exe pour exécuter les tests dans l'assembly.
- Consultez la documentation de NUnit pour les exigences d'exécution.
Partie 3: Configurez pour exécuter nunit-console ou votre NUnit-Lite unique EXE sous le compte utilisateur spécifique.
-
Option 1: utilisez l'approche "runas" runas.exe /user:DOMAIN\someUser "nunit-console.exe somelibrary.dll" OU runas.exe /user:DOMAIN\someUser "MyTestsAndNUnitLiteRunner.exe"
-
Je crois que vous démarreriez une Invite de Commandes; sous Windows 10, ce serait Démarrer/(tapez CMD) et ensuite vous feriez un clic droit sur le choix "Invite de Commandes", et sélectionneriez "Exécuter en tant qu'autre utilisateur", puis saisiriez l'identifiant d'utilisateur et les informations d'identification pour l'utilisateur spécifique.
-
Dans certaines versions de Windows 10, vous ne verrez pas l'option "Exécuter en tant qu'autre utilisateur". Si cela arrive, consultez cet article: https://superuser.com/questions/1045158/how-do-you-run-as-a-different-user-from-the-start-menu-in-windows-10
-
Option 2: utilisez le Planificateur de tâches Windows pour configurer une tâche qui s'exécute sous le compte utilisateur souhaité. Vous aurez besoin de l'identifiant de connexion de l'utilisateur et des informations d'identification lors du processus de configuration de la tâche. Une fois la tâche planifiée configurée, vous pouvez simplement faire un clic droit dessus et sélectionner "exécuter" pour l'exécuter immédiatement. La ligne de commande sera similaire à ceci: "nunit-console.exe" somelibrary.dll OU, pour NUnit-Lite: "MyTestsAndNUnitLiteRunner.exe"
Lors de la configuration de la tâche, vous pourriez avoir besoin d'utiliser des noms de dossier et des guillemets si les chemins impliqués contiennent des espaces.
Partie 4: Exécutez l'assembly de test, en utilisant votre approche choisie, et passez en revue la sortie.
- Consultez la documentation de NUnit pour les détails sur l'endroit où la sortie du test est envoyée et son format.
- Dans mon expérience, NUnit écrivait des fichiers de résultats XML que je pouvais consulter pour voir les résultats du test. Les fichiers XML sont assez lisibles pour être visualisés avec un éditeur de texte et compris.
Partie 5: Itérer jusqu'à ce que cela fonctionne; ajuster le code du test et répéter jusqu'à ce que le succès soit atteint.
- Parfois les choses fonctionnent parfaitement du premier coup, mais souvent non.
- Si vous configurez votre compilation dans Visual Studio pour déployer l'assembly de test mis à jour reconstruit à votre zone d'exécution de test, vous pouvez simplement déclencher manuellement la tâche "planifiée".
Personnellement, je préfère l'approche du Planificateur de tâches Windows à l'approche runas. Une fois configurée, à mon avis, il est plus rapide et plus facile d'itérer sur le code de test et de réessayer le test.
Comme je l'ai mentionné, NUnit3 a un nouveau testeur "NUnit-Lite" qui permet de regrouper simplement NUnit ET vos tests dans une seule application console EXE. La documentation sur la façon de le faire est ici: https://docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html
Dans l'ensemble, l'approche de l'unique EXE NUnit-Lite serait ma préférence, par rapport à l'approche de la Console NUnit, en conjonction avec le Planificateur de tâches Windows.
Les personnes très habiles avec PowerShell et les fichiers batch peuvent préférer l'approche RunAs.