robuste integrasjonstester

9
© Acando AS © Acando AS Robuste integrasjonstester Joar Øyen @joaroyen

Upload: joar-oyen

Post on 09-Dec-2014

403 views

Category:

Technology


0 download

DESCRIPTION

Slides from my talk in NNUG Trondheim 27. September 2012 about writing robust integration tests that depends on external files: http://trondheim.nnug.no/events/82962882/ The code is available on GitHub: https://github.com/joaroyen/IntegrationTestFileAccess

TRANSCRIPT

Page 1: Robuste integrasjonstester

© Acando AS© Acando AS

Robuste integrasjonstester

Joar Øyen@joaroyen

Page 2: Robuste integrasjonstester

© Acando AS

Scenarioer

● Testing av egen kode eller bruk av biblioteker hvor konfigurasjon ikke kan injiseres

● Kode som modifiserer konfigurasjonsfiler

● Sertifikater

● Testdata

Page 3: Robuste integrasjonstester

© Acando AS

Utfordringer

● Forskjellige testrammeverk tilbyr varierende grad av kontekstinformasjon

● Forskjellige testkjørere oppfører seg forskjellig med tanke på hvor filer legges og hvor testene kjøres

Page 4: Robuste integrasjonstester

© Acando AS

Observasjoner - MSTest

● Oppretter egne kataloger for hver testkjøring for MSTest-prosjekter

● Alle testprosjekter kjøres ut fra samme katalog

● Kan deploye ekstra filer vha. konfigurasjon av testkjøring eller attributter

● Testrammeverket har egen klasse som heter TestContext med metadata om testkjøringen

Page 5: Robuste integrasjonstester

© Acando AS

Observasjoner - ReSharper

● ShadowCopy av assemblies mens resten kjøres fra prosjektkatalogen

● Ettersom det ikke opprettes egne kataloger for hver testkjøring blir gammel moro liggende igjen

● Kan benytte konfigurasjonen til MSTest for å deploye filer

Page 6: Robuste integrasjonstester

© Acando AS

Observasjoner - NCrunch

● Kopierer og bygger prosjektene i en egne foldere - referanser kopieres ikke inn som standard

● Kan konfigureres til å inkludere nødvendige filer

● Kjører ikke pre- og post build steg som standard

● Benytter egen konfigurasjonsfil som ender på .config.ncrunchconfig

● Test assemblyen har ikke en konfigurasjon dersom du ikke eksplisitt legger til en app.config

Page 7: Robuste integrasjonstester

© Acando AS

Demo

Page 8: Robuste integrasjonstester

© Acando AS

Oppsummering

●Med en gang du ønsker å kjøre noe annet en isolerte enhetstester=> Lær deg oppførselen til testrammeverket ditt og testkjøreren din

● Løsninger Sett BuildAction til Copy Allways/Copy if Newer for å få kopiert filer til bin under

bygging. Copy Allways skriver over endringer siden forrige bygg, men ikke nødvendigvis forrige testkjøring.

Benytt egenskapen CodeBase på en assembly for å håndtere shadow copy Benytt embedded resources for å pakke avhengigheter inn i dll'en som uansett blir

deployet Post-build script er en siste løsning

● Konfigurasjon må oppfriskes etter at konfigurasjonsfilen er oppdatert

● NB! Slike integrasjonstester støtter ikke parallellkjøring av tester

Page 9: Robuste integrasjonstester

© Acando AS

Spørsmål

● Presentasjon: http://www.slideshare.net/joaroyen

● Kode: https://github.com/joaroyen

?