Model- View - ViewModel et testabilité pour WPF/ Silverlight

Preview:

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 Presentation

Citation preview

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 ?

Recommended