Comme pour chacun de mes projets, je fais des tests unitaires.
Il en est de même pour les applications Silverlight.
C’est comme ça que j’ai découvert qu’il existait un projet de type Tests unitaires pour Silverlight.
Par contre, utilisant essentiellement Silverlight avec MOSS, je fais tout le temps appel aux web services de celui-ci.
Il faut donc que je teste l’appel aux services de façon asynchrone.
Donc, je vais rapidement survoler la solution utilisée.
Pour infos, mes applis silverlight utilise MVVM donc les appels sont effectués via un ServiceLocator dans mon Model
Pré-requis : Silverlight toolkit
Création du Projet :
On ajoute les références au projet Silverlight à tester
On compléte la clase Test générée:
[TestClass]public class Tests : Microsoft.Silverlight.Testing.SilverlightTest //pour l'asynchrone{private const String _mossUrlRoot = "http://monMoss";private Boolean _httpResult;public Tests() : base(){//http://msdn.microsoft.com/en-us/library/system.net.browser.webrequestcreator.clienthttp(VS.95).aspx//WebRequestCreator.ClientHttp : car j'envoi du XML dans mes requests et j'utilise les ws de moss_httpResult = HttpWebRequest.RegisterPrefix(_mossUrlRoot, WebRequestCreator.ClientHttp);var request = WebRequest.Create(new Uri(_mossUrlRoot)) as HttpWebRequest;request.UseDefaultCredentials = true;}[Asynchronous] //car appel asynchrone[TestMethod]public void MVVM_Model_Get_Items(){if (_httpResult){//Initialise mes servicesModel.ServiceLocator.InitializeServicesTest(initParams, _mossUrlRoot);//Lance la requeteModel.ServiceLocator.MesServices.LaunchRequest();EnqueueConditional(() => Model.ServiceLocator.MesServices.Result != null);EnqueueCallback(() => Assert.IsTrue(Model.ServiceLocator.MesServices.Result.Count > 0));EnqueueTestComplete();//fin du test, mais le Assert est en attente du resultat}}}
On lance le teste, via un “View in Browser” sur le projet, voilà le résultat :
Le méthode de test bien qu’asynchrone est passée sans souci.
Si nous n’avions pas utilisé les “EnqueueCallBack” et “EnqueueTestComplete”, le test aurait retourné une erreur.
Pour réussir ce test, je me suis appuyé sur cet article : http://code.msdn.microsoft.com/silverlightut
Aucun commentaire:
Enregistrer un commentaire