Your SlideShare is downloading. ×
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
TDD+CI con Teamcity
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

TDD+CI con Teamcity

568

Published on

Charla en Cartuja.NET sobre Mercurial, TDD en .NET con NUnit, MSTest, XUnit e Integración continua con Teamcity. …

Charla en Cartuja.NET sobre Mercurial, TDD en .NET con NUnit, MSTest, XUnit e Integración continua con Teamcity.
Impartida el 13 de junio de 2013 en Cartuja.NET, Sevilla.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
568
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MercurialTest Driven DevelopmentContinuous Integration@pmolinamPedro J. Molina
  • 2. Agenda• Mercurial• Test Driven Development• Continuous Integration• DemosCartuja .NET
  • 3. PatrocinadoresCartuja .NET
  • 4. Contenido Unit Test Tests SUT AAA MockingCartuja .NET
  • 5. Herramientas TortoiseHq http://tortoisehg.bitbucket.org/ VisualHq http://visualhg.codeplex.com/ Nunit http://nunit.org/ Xunit http://xunit.codeplex.com/ MOQ https://github.com/Moq TeamCity http://www.jetbrains.com/teamcity/Cartuja .NET
  • 6. Test de Unidad• Definition:• A unit test is a piece of a code (usually a method) that invokes another• piece of code and checks the correctness of some assumptionsafterward.• If the assumptions turn out to be wrong, the unit test has failed.• A “unit” is a method or function.• Unit testing will be performed against a system under test (SUT).Cartuja .NET
  • 7. Propiedades de un buen test deunidad• Se prueba UN SOLO hecho• Legible: muestra comofunciona el sistema ->autodocumenta un API• Automatizable• Repetible (no debe dependendel estado de otros sistemaspara funcionar)• Sin dependencias• Debe ser fácil de implementar• Una vez escrito debe perdurarpara uso futuro• Cualquiera debe poderejecutarlo• Debe correr rápidoCartuja .NET
  • 8. AsercionesAssert.AreEquals(3, Sum(1,2), “La suma no cuadra”);ValorRealValorEsperadoMensaje en caso de falloCartuja .NET
  • 9. Colores de TestFalloInconclusoCorrectoCartuja .NET
  • 10. Frameworks de UnitTesting•NUnit (el primero en .NET) (port de Junit)•MSTests•Xunit ( @jamesnewkirk, @bradwilson )Cartuja .NET
  • 11. AtributosNUnit MSTests XUnit[TestFixture] [TestClass] - (no need: considered anti-pattern)[Test] [TestMethod] [Fact] / [Theory][Description] [Description][Ignore] [Ignore] [Ignore][SetUp] [TestInitialize] NO[TearDown] [TestCleanup] NO[ExpectedException] [ExpectedException] NO…Cartuja .NET
  • 12. Dependencias• StubsCartuja .NET
  • 13. Refactoring•Refactoring is the act of changingthe code’s design without breakingexisting functionality.Cartuja .NET
  • 14. Inyección de Dependencias. DI• Patrón de diseño OO [Fowler] en el que se proporcionanobjetos a una clase, en lugar de ser la propia clase la que crealos objetos.• Por constructor• Por propiedades• No new() dentro de una claseCartuja .NET
  • 15. Inversión de Control. IoC• El flujo habitual se da cuando es el código del usuario quieninvoca a un procedimiento de una biblioteca.• La inversión de control sucede cuando es la biblioteca la queinvoca el código del usuario.• Un FWK de IoC toma el control e invoca, crea y gestiona elciclo de vida de los objetos.Cartuja .NET
  • 16. Frameworks de Mocking• Moq• RhinoMocks• Etc…• MS Fakes (antiguo Moles) (solo en VS Ultimate)Cartuja .NET
  • 17. Mocking: Microsoft FakesCartuja .NET
  • 18. Ejemplo de Mocking: Moqvar mock = new Moq.Mock<IFoo>();mock.Setup(foo => foo.DoSomething("ping")).Returns(true);var sut = new Calculator(mock.Object);Assert.AreEquals(true, sut.Execute(e));Cartuja .NET
  • 19. Test de regresión• Definición: Evidencia la ocurrencia de un error presente o pasado.• Permite demostrar la existencia o ausencia del fallo.• Buena practica: Primer paso antes de corregir un bug: escribir un testy demostrar que el test falla. Corregir el error hasta que el test pase.Demuestra la corrección. Señaliza si el futuro, el error vuelve aaparecer.Cartuja .NET
  • 20. Internals• AssemblyInfo.csusing System.Runtime.CompilerServices;[assembly:InternalsVisibleTo("MyLib.Tests")]Cartuja .NET
  • 21. Ficheros de soporte para Test• MSTEST: [Deploy]• Frágil: depende de VS Studio• Recurso embebido• Mas robusto: Siempre funcionaCartuja .NET
  • 22. UI Tests•WatiN•Selenium•Coded UICartuja .NET
  • 23. WatiN[Test]public void SearchForWatiNOnGoogle(){using (var browser = new IE("http://www.google.com")){browser.TextField(Find.ByName("q")).TypeText("WatiN");browser.Button(Find.ByName("btnG")).Click();Assert.IsTrue(browser.ContainsText("WatiN"));}}http://watin.org/Cartuja .NET
  • 24. Nugets• nunit• nunit.runners xunit autofixture moqCartuja .NET
  • 25. Continuous Integration• Definición: Proceso de automatizar lascompilaciones ante cada commit.• Pasos:• Compilar, Test de Unidad, Calidad deCódigo, Duplicados, Empaquetado, Publicación, Despliegues• Medir, detectar errores cuanto antes, calidad delcódigoCartuja .NET
  • 26. Continuous Integration• Herramientas• Hudson  Jetkins• Cruise Control• TFS• Teamcity• Continuous Delivery: La capacidad de poder desplegar enproducción nuevas características de modo continuoCartuja .NET
  • 27. Referencias• The Art of Unit Testing, Roy Osherove• Ugly code http://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html• Blog de Mark Seemann http://blog.ploeh.dk/• http://bitbucket.org• TeamCityhttp://www.jetbrains.com/teamcity/Cartuja .NET
  • 28. Cartuja .NET

×