7
votes

Test du service Windows dans .NET

Je développe un service Windows en C # .NET et j'ai une certaine assurance à exécuter et à tester mon service. J'utilise un composant de minuterie pour l'exécuter de temps en temps et exécuter mes méthodes. Je dois supposer le service tout le temps de l'exécuter. Tout le monde connaît un moyen plus pratique de tester un service?


2 commentaires

5 Réponses :


15
votes

Cela revient souvent à la question ce que vous voulez tester . Voulez-vous tester le service, ou la fonctionnalité qu'elle effectue? Personnellement, je voudrais ...

  • Réfacteur Toutes les fonctionnalités de service dans une bibliothèque de classe distincte
  • Testez la bibliothèque
  • Invoquez la fonctionnalité de la bibliothèque du service

    ... puis conservez la quantité de code dans le service lui-même au minimum nécessaire pour déclencher la fonctionnalité de la bibliothèque de classe.


3 commentaires

Je voudrais tester les fonctionnalités qu'il effectue.


@Tomcamara: Alors les points de balle de ma réponse devraient bien fonctionner pour vous.


exactement bien. Cela fait tester le service directement, car il tire ou non.



10
votes

Les services Windows sont des execres ordinaires qui se connectent au gestionnaire de contrôle de service au démarrage.

Je teste normalement des services en leur donnant un argument de ligne de commande facultatif qui leur indique d'exécuter normalement, à l'intérieur de la méthode principale , au lieu d'agir en tant que service. De cette façon, je peux les déboguer directement au sein de Visual Studio ou sur la ligne de commande, etc.


1 commentaires

Bien que vos commentaires nous indiquent dans une direction, ce serait super utile si vous avez posté un exemple de la façon dont vous en accomplissez cela. C'est ma première fois que je développe un service, ce n'est donc pas quelque chose que je voudrais juste mettre en place vos commentaires, je pense que la même chose serait vraie pour que les gens googling cela. :)



4
votes

L'une des voies de gestion des services lorsque vous développez est le long de ces lignes - exécutez un service Windows comme console . Je l'ai trouvé utile car vous pouvez ajouter du code à écrire à la console pour obtenir des informations de débogage et écrire toutes les données d'exception pertinentes.

Je n'utiliserais pas cette méthode au lieu des tests unitaires, mais j'ai trouvé que cela serait un moyen utile de travailler et de déboguer si nécessaire.


0 commentaires

4
votes

Vous voulez probablement ajouter des tests d'unité à votre service.

On dirait que vous pouvez en profiter davantage après l'ajout de votre application au planificateur de tâches au lieu de l'exécuter en tant que service.

Autre que si vous en avez vraiment besoin en tant que service dont vous avez besoin pour la concevoir afin que cela puisse être testé. J'écris habituellement mes services dans une classe distincte et ajoutez un projet .exe à ce sujet afin que je puisse le faire de la ligne de commande aussi.


1 commentaires

Était vraiment ce que je pensais faire, créez les fonctionnalités de service dans une classe distincte, car je pourrais tester la classe d'un projet de formulaire Windows ou d'une ligne de commande.



1
votes

Après créer un service de fenêtre, vous pouvez la définir dans le service de fenêtre.

Installer le service à l'aide d'installutil.exe Pour installer ou désinstaller Windows Service (qui a été créé à l'aide de .NET Framework) Utilisez Utility InstallUtil.exe. Cet outil peut être trouvé dans le chemin suivant (utiliser le numéro de version de cadre approprié).

c: \ windows \ microsoft.net \ framework \ v2.0.50727 \ installuttil.exe

Installer la commande de service de service .NET similaire à celle-ci (spécifiez le chemin complet de votre service).

installuttil.exe "chemin de service"

Pour désinstaller le service .NET Utilisez la même commande avec le paramètre / u.

instalutil.exe / u "chemin de service"


0 commentaires