Unit testing in Visual Studio 2013
-
Upload
domusdotnet -
Category
Technology
-
view
502 -
download
3
description
Transcript of Unit testing in Visual Studio 2013
@ALM@Work
2014@ALM@Work 2014
Unit testing con Visual Studio
Massimiliano D’Amicohttp://codeimprovements.wordpress.com
[email protected]@prodvit
…
@ALM@Work
2014Agenda
Test Driven Development
Unit testing & TDD
Mock, stub e shim
Testing Framework
MS Fakes Demo
@ALM@Work
2014
TDD: processo di scrittura del codice in cui lo sviluppo del software è guidato dalla stesura di test automatici.
Test-Driven Development (TDD)
Pensa(Scrivi i tests)
Red tests Green tests
Refactor
Tests must focus on the class' behavior, not its implementation.
http://www.jamesshore.com/Agile-Book/test_driven_development.html
@ALM@Work
2014Unit Testing & TDD
UnitàFocus sulla classe o sul metodo
Isolamento
Separazione
Automatizzazione
Da sistemi o moduli esterni
Tra interfaccia e implementazione
Run ad ogni build
@ALM@Work
2014Mock, stub e …
Mock
http://martinfowler.com/articles/mocksArentStubs.html
Stub
Oggetti preimpostati mediante calls expectations per effettuare la behaviour verification.
Oggetti che simulano la logica del sistema per effettuare la state verification.
Fakes
Oggetti che implementano l’interfaccia dell’oggetto reale, implementandone parte della logica per effettuare la state verification.
@ALM@Work
2014… shim!
Microsoft Windows Application Compatibility Toolkit (ACT)
Libreria o modulo software che in modo trasparente per l’utilizzatore: • intercetta le chiamate ad
una specifica API• gestisce in autonomia la
chiamata stessa• trasforma i parametri• redirige il flusso di
esecuzione. WINE
@ALM@Work
2014Stub o Mock?
Stub
…WarehouseStub warehouse = new WarehouseStub(); warehouse.HasInventory = ()=>{return false};order.fill(warehouse);Assert.IsFalse(order.IsFilled());
…WarehouseMock mock = new WarehouseMock(typeof(Warehouse));warehouse.expects(once()).method(“HasInventory") .withAnyArguments() .will(returnValue(false));order.fill(mock.Instance);mock.VerifyExpectations(); Mock
@ALM@Work
2014
Framework/Lib .Net per unit testingFramework Free/Commercial Features
xUnit.net Free (open source) Assertions, Attributes
SpecFlow Free (open source) Assertions, Specification DSL
NUnit Free (open source) Assertions, Attributes
csUnit Free (open source) Assertions, Attributes
MSTest Free Assertions, Attributes
Library Free/Commercial Mocks/Stubs
Typemock Isolator Commercial Mock
Telerik JustMock Commercial Mock
Rhino Mocks Free (open source) Mock/Stub
Moq Free (open source) Mock
MS Fakes Free Stub (mock?)
@ALM@Work
2014
MFF consente di isolare il codice di cui si sta eseguendo il test sostituendo moduli e/o librerie esterne mediante stubs o shims.
1. Inject interfaces2. Add Fakes Assemblies3. (Create a ShimContext) Construct
instances of the stub/shim and provide code for its methods
Microsoft Fakes Framework
@ALM@Work
2014
DEMO
@ALM@Work
2014
“Da un grande potere, derivano grandi responsabilità…”
@ALM@Work
2014Grazie agli sponsor
@ALM@Work
2014
http://tinyurl.com/ALMAW14
Per voi sono solo 10 minuti persi, per noi è utilissimo per poter
crescere e migliorare!