Unit testing in Visual Studio 2013

13
@ ALM@Work 2014 @ ALM@Work 2014 Unit testing con Visual Studio Massimiliano D’Amico http://codeimprovements.wordpress.com [email protected] @prodvit

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

Page 1: 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

Page 2: Unit testing in Visual Studio 2013

@ALM@Work

2014Agenda

Test Driven Development

Unit testing & TDD

Mock, stub e shim

Testing Framework

MS Fakes Demo

Page 3: Unit testing in Visual Studio 2013

@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

Page 4: Unit testing in Visual Studio 2013

@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

Page 5: Unit testing in Visual Studio 2013

@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.

Page 6: Unit testing in Visual Studio 2013

@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

Page 7: Unit testing in Visual Studio 2013

@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

Page 8: Unit testing in Visual Studio 2013

@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?)

Page 9: Unit testing in Visual Studio 2013

@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

Page 10: Unit testing in Visual Studio 2013

@ALM@Work

2014

DEMO

Page 11: Unit testing in Visual Studio 2013

@ALM@Work

2014

“Da un grande potere, derivano grandi responsabilità…”

Page 12: Unit testing in Visual Studio 2013

@ALM@Work

2014Grazie agli sponsor

Page 13: Unit testing in Visual Studio 2013

@ALM@Work

2014

http://tinyurl.com/ALMAW14

Per voi sono solo 10 minuti persi, per noi è utilissimo per poter

crescere e migliorare!