際際滷 della sessione "Unit testing in Visual Studio 2013" tenuta da Massimiliano D'Amico durante l'evento ALM@Work 2014 del 17/01/2014
1 of 13
Downloaded 16 times
More Related Content
Unit testing in Visual Studio 2013
1. ALM@Work 2014
Unit testing con Visual Studio
Massimiliano DAmico
http://codeimprovements.wordpress.com
mdamico@progesoftware.it
@prodvit
ALM@Work 2014
3. Test-Driven Development (TDD)
ALM@Work 2014
TDD: processo di scrittura del codice in cui lo
sviluppo del software 竪 guidato dalla stesura
di test automatici.
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
4. Unit Testing & TDD
ALM@Work 2014
Focus sulla classe o sul metodo
Unit
Da sistemi o moduli esterni
Isolamento
Separazione
Automatizzazion
e
Tra interfaccia e
implementazione
Run ad ogni build
5. Mock, stub e
ALM@Work 2014
Oggetti preimpostati mediante calls
expectations per effettuare la
behaviour verification.
Mock
Oggetti che simulano la logica del
sistema per effettuare la state
verification.
Stub
Oggetti che implementano
linterfaccia delloggetto reale,
implementandone parte della logica
per effettuare la state verification.
Fakes
http://martinfowler.com/articles/mocksArentStubs.html
6. shim!
Libreria o modulo software che in
modo trasparente per
lutilizzatore:
intercetta le chiamate ad una
specifica API
gestisce in autonomia la
chiamata stessa
trasforma i parametri
redirige il flusso di
esecuzione.
ALM@Work 2014
Microsoft
Windows
Application
Compatibility
Toolkit (ACT)
WINE
7. Stub o Mock?
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();
ALM@Work 2014
Stub
Mock
9. Microsoft Fakes Framework
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 interfaces
2. Add Fakes Assemblies
3. (Create a ShimContext) Construct
instances of the stub/shim and provide
code for its methods