Unit testing in Visual Studio 2013

Post on 24-May-2015

504 views 3 download

description

Slide della sessione "Unit testing in Visual Studio 2013" tenuta da Massimiliano D'Amico durante l'evento ALM@Work 2014 del 17/01/2014

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

mdamico@progesoftware.it@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!