Post on 23-Jan-2017
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA
HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH
MVVM und TDD:
Testbare ViewModels
Thomas Claudius Huber@ThomasClaudiusH
Thomas Claudius Huber
Developer Week 2016 - Nürnberg - Thomas Claudius Huber2 22.06.2016
Principal Consultant @ Trivadis AGCloud Solutions
Developer, Trainer, Architect
Microsoft MVP for Windows Development
Spezialisiert in WPF, Angular 2, C#, .NET, Azure
What else:
Pluralsight-Autor, Buchautor
Fussball, Skaten, Fitness, Gitarre
Developer Week 2016 - Nürnberg - Thomas Claudius Huber3 22.06.2016
“Code without tests
is bad code”Michael Feathers
Das MVVM Pattern
Developer Week 2016 - Nürnberg - Thomas Claudius Huber4 22.06.2016
ModelViewModelView
Binding
is using
DataContext
Data
FirstName
LastName
FirstName
LastName
Commands
SaveCommand
TextBox
TextBox
Button
Binding
Binding
Vorteile von MVVM
Developer Week 2016 - Nürnberg - Thomas Claudius Huber5 22.06.2016
Wartbarkeit
Separation of Concerns
Testbarkeit
Agenda
Developer Week 2016 - Nürnberg - Thomas Claudius Huber6 22.06.2016
1. Unit Testing und TDD basics
2. Testbare ViewModels schreiben
3. Moq, Autofac und mehr
Developer Week 2016 - Nürnberg - Thomas Claudius Huber7 22.06.2016
1. Unit Testing und TDD Basics
Unit Tests
Produktions-CodeUnit Tests Integration Tests
Unit Tests sind F.I.R.S.T.
Developer Week 2016 - Nürnberg - Thomas Claudius Huber9 22.06.2016
TimelySelf-validating
RepeatableIndependentFast
Bekannte Unit Testing Frameworks
Developer Week 2016 - Nürnberg - Thomas Claudius Huber10 22.06.2016
xUnitNUnitMSTest
XUnit
Developer Week 2016 - Nürnberg - Thomas Claudius Huber11 22.06.2016
Demo
Test Driven Development (TDD)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber12 22.06.2016
Red
GreenRefactor
Vorteile von TDD
Developer Week 2016 - Nürnberg - Thomas Claudius Huber13 22.06.2016
Produktiver Code hat testbares Design
Es muss intensiv über die Lösung nachgedacht werden
Eigene Logik lässt sich fertigstellen, auch wenn noch
Abhängigkeiten fehlen
«Spikes» in TDD
Developer Week 2016 - Nürnberg - Thomas Claudius Huber14 22.06.2016
«Spikes» sind Experminte, die später
wieder verworfen werden
(zumindest in der Theorie )
Spike it!
Developer Week 2016 - Nürnberg - Thomas Claudius Huber15 22.06.2016
Demo
Developer Week 2016 - Nürnberg - Thomas Claudius Huber16 22.06.2016
Testbare ViewModels schreiben
Abhängigkeiten eines ViewModels
Developer Week 2016 - Nürnberg - Thomas Claudius Huber17 22.06.2016
Andere ViewModelsEvent Aggregator
DialogeData access
Abhängigkeiten abstrahieren
Developer Week 2016 - Nürnberg - Thomas Claudius Huber18 22.06.2016
MainView
Model
FriendData
Service
Abhängig von
Abhängigkeiten abstrahieren
Developer Week 2016 - Nürnberg - Thomas Claudius Huber19 22.06.2016
MainView
ModelIFriend
DataProvider
Abhängig von
Friend
DataProviderMock
implements
Abhängigkeiten abstrahieren
Developer Week 2016 - Nürnberg - Thomas Claudius Huber20 22.06.2016
Demo
Developer Week 2016 - Nürnberg - Thomas Claudius Huber21 22.06.2016
Moq, Autofac und mehr
Abhängigkeiten mit Moq mocken
Developer Week 2016 - Nürnberg - Thomas Claudius Huber22 22.06.2016
Moq ist via NuGet verfügbar
Funktioniert unter der Haube
mit Dynamic Proxies
Demo
Die Anwendung zum Laufen bekommen
Developer Week 2016 - Nürnberg - Thomas Claudius Huber23 22.06.2016
Demo
Dependencies mit Autofac injizieren
Developer Week 2016 - Nürnberg - Thomas Claudius Huber24 22.06.2016
Demo
DeleteCommand implementieren
Developer Week 2016 - Nürnberg - Thomas Claudius Huber25 22.06.2016
Demo
DeleteCommand mit MessageBox testen
Developer Week 2016 - Nürnberg - Thomas Claudius Huber26 22.06.2016
Erst ein Spike
Dann ein Test
Und schliesslich ein Interface Demo
Developer Week 2016 - Nürnberg - Thomas Claudius Huber27 22.06.2016
Summary
Summary
Developer Week 2016 - Nürnberg - Thomas Claudius Huber28 22.06.2016
Abhängigkeiten aus ViewModel abstrahieren
ViewModels lassen sich ohne
konkrete Abhängigkeiten testen
Code without tests is bad code
Fragen?Thomas Claudius Huber
@thomasclaudiush
thomas.huber@trivadis.com
www.thomasclaudiushuber.com
22.06.2016 Developer Week 2016 - Nürnberg - Thomas Claudius Huber29