Question

J'ai une application qui envoie des messages à un service Web externe.Je construis et déploie cette application en utilisant MSBuild et Cruisecontrol.NET.Au fur et à mesure que CCNET crée et déploie l'application, il exécute également un ensemble de tests à l'aide de NUnité.J'aimerais maintenant tester également la communication du service Web.

Mon idée est que dans le cadre du processus de construction, un service Web doit être généré (basé sur les services Web externes WSDL) et déployé sur le serveur Web local des serveurs de construction.Tout ce que le service Web doit faire est de recevoir le message et de le placer sur le système de fichiers afin que je puisse ensuite le vérifier en utilisant NUnit ordinaire par exemple.Cela faciliterait également le développement, car les nouveaux développeurs n'auraient qu'à exécuter le script de construction et à être opérationnel (sans avoir à passer du temps à établir une connexion au service tiers).

Y a-t-il utilitaires existants qui se moque facilement d'un service web basé sur un WSDL ?N'importe qui fait quelque chose de similaire en utilisant MSBuild ?

Sont là d'autres moyens de tester ce scénario ?

Était-ce utile?

La solution

Je viens de commencer à chercher http://www.soapui.org/ et il semble que cela fonctionnera bien pour tester les services Web.

En outre, envisagez peut-être d'ajouter une couche d'abstraction dans votre service Web, chaque appel de service appellerait directement une méthode testable (en dehors de la portée Web) ?Je viens de faire cela avec un projet plus important sur lequel je travaille, et sa testabilité fonctionne bien.

Autres conseils

En général, une très bonne façon de tester des choses comme celle-ci est d'utiliser objets simulés.

Au travail, nous utilisons le produit TypeMock pour tester des éléments tels que la communication du service Web et d'autres dépendances externes.Cela coûte de l'argent, donc pour cette raison, il n'est peut-être pas adapté à vos besoins, mais je pense que c'est un produit fantastique.Je peux vous dire par expérience personnelle qu'il s'intègre très bien à NUnit et CCNet.

Il a une syntaxe vraiment simple où vous dites essentiellement "Lorsque cette méthode / propriété est appelée, je veux que vous renvoyiez cette valeur à la place." C'est idéal pour tester des choses comme les échecs de réseau, les fichiers n'étant pas présents et, bien sûr, les services Web.

Jeter un coup d'œil à NMock2.Il s'agit d'un produit moqueur open source qui vous permet de créer des implémentations « virtuelles » pour des interfaces prenant en charge une interaction riche et profonde.

Par exemple, si votre interface WS s'appelle IService et a un Data GetData() méthode, vous pouvez créer une simulation qui nécessite que la méthode soit appelée une fois et renvoie un nouveau Data objet:

var testService = mockery.NewMock<IService>();
Expect
    .Once
    .On(testService)
    .Method("GetService")
    .WithNoArguments()
    .Will(
        Return.Value(new Data());

A la fin du test, appelez mockery.VerifyAllExpectationsHaveBeenMet() pour assurer que le GetData la méthode a été réellement appelée.

P.S. :ne confondez pas le projet "NMock2" avec le "NMock RC2", également appelé "nmock2" sur sourceforge.NMock2-the-project semble avoir remplacé NMock.

Cela pourrait aussi être quelque chose - Oiseau moqueur.Ayez l'air utile.

Sur mon lieu de travail, nous utilisons Typemock et nUnité pour nos tests unitaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top