model- view - viewmodel et testabilité pour wpf/ silverlight
DESCRIPTION
Model- View - ViewModel et testabilité pour WPF/ Silverlight. Richard Clark Clark Ingénierie Informatique. Simon Ferquel Acces s It. Clark Ingénierie Informatique. http://www.c2i.fr. Livres chez Microsoft Press. Expertise .NET. 2001-2009 RIP!. Expert CodeFluent. - PowerPoint PPT PresentationTRANSCRIPT
22
Model-View-ViewModel et testabilité
pour WPF/SilverlightRichard ClarkClark Ingénierie Informatique
Simon FerquelAccess It
33
Clark Ingénierie Informatique
http://www.c2i.frLivres chez Microsoft Press
Expert CodeFluent 2001-2009 RIP!
Expertise .NET
44
Access It en quelques mots…
Consulting/expertise, réalisation (projet /assistance technique) et formation (CPLS) sur les technologies Microsoft
Haut niveau de certification2 agences à Lille et Paris, couverture nationaleCentre des Usages pour la région Nord
3 grands domaines d’expertise technologiquePlateforme applicative : SharePoint, SQL Server & BI, BizTalk.Net : architecture, Framework & langages, RIA/RDA (Silverlight, WPF, Surface), industrialisation/ALM (TFS/VSTS)…Infrastructure : poste de travail, serveurs, virtualisation, messagerie, annuaire…
http://www.access-it.fr
55
M-V-VM : LA STAR !
Cinch MVVM Light ToolkitMVVM Helpers
MVVM FoundationCaliburn
OnyxCalcium
nRoute
Basic MVVM Framework
GoodLight
Ocean
Nito MVVM …Prism ?
66
M-V-VM : Principes de base
View ViewModel Model
XAML Classe
Databinding
Business Objects
77
M-V-VM
DémoMise en place
88
Testabilité - Pourquoi
Testabilité réparatriceReproduire tout bug de manière automatiséeIsoler le composant fautif et à détecter précisément la
cause de l ' erreurAssurer la non-régression pour la suite du projet
Test Driven DevelopmentAssurer la robustesse des composants dès le départDétecter très tôt la plupart des bugsAssurer la facilité d 'utilisation des composants
99
M-V-VM
Démo
1010
M-V-VM
DémoRelay Command
1111
Testabilité – Comment ? (1)
Isolation :Etre capable de remplacer toutes les dépendances
Paramètres de constructeurInjection de propriétés
Appeler une fonctionnalitéValider l'état après appelValider les communications avec les dépendances
1212
Testabilité – Comment ? (2)
IoC / Injection de dépendancesBeaucoup d'implémentations (Unity, Castle / Windsor,
Spring.Net, StructureMap…)Implémentation Microsoft : Unity
1313
DI : Configuration
Container.RegisterType<SocietesViewModelBase, SocietesViewModel>();
Container.RegisterType<ISocieteDAL, SocieteDAL>(new ContainerControlledLifetimeManager());
Ou fichier de configuration
1414
Utilisation
Appel au container
public class SocietesViewModel : SocietesViewModelBase{ public SocieteViewModel(ISocieteDAL dal){}}…var vm = Container.Resolve<SocietesViewModelBase>();
1515
M-V-VM
Démo
1616
M-V-VM
DémoViewModel « complexe »Méthodes asynchrones
1717
Tester du code asynchrone
Mocker un service asynchroneComprendre le fonctionnement Begin/End
DispatcherComprendre le principe de pompe à messagesLe test doit déclencher la pompe…Mais ne doit pas la bloquer…Attention, il va y avoir des Threads !
Pour Silverlight : C'est beaucoup plus simple !
1818
M-V-VM
Démo
1919
M-V-VM
Questions ?