<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Mikael Deurell : Test</title><link>http://blogs.msdn.com/deurell/archive/tags/Test/default.aspx</link><description>Tags: Test</description><dc:language>sv-SE</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Skicka inte era testare till Provence</title><link>http://blogs.msdn.com/deurell/archive/2008/10/28/skicka-inte-era-testare-till-provence.aspx</link><pubDate>Tue, 28 Oct 2008 15:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9020143</guid><dc:creator>mikaeld</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/deurell/comments/9020143.aspx</comments><wfw:commentRss>http://blogs.msdn.com/deurell/commentrss.aspx?PostID=9020143</wfw:commentRss><description>&lt;P&gt;... för ännu en fördjupande utbildning i testmetodik... Vänta ett litet tag med att skicka era arkitekter på den hetaste arkitektutbildningen i Redmond. En av de mest påtagliga utmaningarna i vår bransch är att vi har suboptimerat teamen så hårt att vi glömt bort att vi är just det. Team! Vi har fått för oss att om vi har de individuellt bästa testarna, utvecklarna och arkitekterna inom varje skrå, med sina respektive metodiker, kommer vi bli bättre som team. Men en perfekt ITIL tillämpning eller testmetodik är inte helt optimal om den inte kan kopplas till en utvecklingsprocess. &lt;/P&gt;
&lt;P&gt;Jag är övertygad om att det är bättre att bredda sig en aning. Test är ett perfekt verktyg för att knyta ihop och driva teamet framåt. Låt mig ge några exempel;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Testdriven arkitektur&lt;BR&gt;&lt;/STRONG&gt;Att använda enhetstester för att driva design börjar sakteliga sätta sig, men varför inte även använda tidiga utvecklardrivna lasttester för att adressera icke funktionella krav och skapa en mätbar baseline för er arkitektur? Hur ser era komponenter och tjänster ut när de fungerar optimalt? Hur ser de ut när de inte gör detta? Vilka aspekter skall ni titta på? Behöver ni komplettera med instrumentering? Varför inte automatisera detta i er byggprocess? Resultatet från detta arbete är det som skall övervakas i produktion.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Testdriven instrumentering och övervakning&lt;BR&gt;&lt;/STRONG&gt;Om vi i vår arkitektur har definierat vilka aspekter som skall testas, och i samband med detta även skapat en hälsomodell för applikationen är det exakt detta som skall övervakas i produktion. Avvikelser och driftstörningar i produktion kan återföras till arkitektursidan som förfinade lasttester.&lt;/P&gt;
&lt;P&gt;Test är en lysande brygga mellan arkitektur och utveckling och mellan utveckling och drift. Det vackra är att det inte behövs inte några stora förändringar eller dyra verktyg, det är mest en inställningsfråga och arbetet kan drivas från de individuella teamen. Lasttester kan realiseras med enkla verktyg som tinyget och perfmon eller med mer sofistikerade verktyg som Visual Studio Team System och Team Foundation Server. Effekten? Energi, passion och bättre teamkänsla. Varför vänta?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9020143" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/deurell/archive/tags/Test/default.aspx">Test</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Arkitektur/default.aspx">Arkitektur</category></item><item><title>Debugga i produktion eller testa bort i utvecklingsfas?</title><link>http://blogs.msdn.com/deurell/archive/2008/09/30/debugga-i-produktion-eller-testa-bort-i-utveckligsfas.aspx</link><pubDate>Tue, 30 Sep 2008 13:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8970124</guid><dc:creator>mikaeld</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/deurell/comments/8970124.aspx</comments><wfw:commentRss>http://blogs.msdn.com/deurell/commentrss.aspx?PostID=8970124</wfw:commentRss><description>&lt;P&gt;Enkelt svar hoppas jag... Jag tänkte visa ett exempel på hur ni kan debugga en låg cpu hängning i asp.net med hjälp av WinDbg. Jag är långt ifrån någon mästare i WinDbg men jag har grym nytta av mina debuggingkunskaper i egenskap av Solution Architect. Hela meningen med del 1 i denna screencast är att visa hur man kan debugga en hängning i produktion för att sedan i del 2 visa hur ni kan testa bort denna avvikelse med hjälp av Visual Studio Team System Test Edition (VSTEST). &lt;/P&gt;
&lt;P&gt;Screencasts finns på &lt;A href="http://channel9.msdn.com/Niners/deurell/" mce_href="http://channel9.msdn.com/Niners/deurell/"&gt;Channel9&lt;/A&gt; och ni har länkar till de två delarna nedan;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/deurell/ASPnet-hanganalys-med-WinDbg-Del-1/" mce_href="http://channel9.msdn.com/posts/deurell/ASPnet-hanganalys-med-WinDbg-Del-1/"&gt;Del 1 - Debugga låg cpu hang i asp.net med WinDbg&lt;/A&gt;&lt;BR&gt;&lt;A href="http://channel9.msdn.com/posts/deurell/ASPnet-hanganalys-med-VSTS-Test-Del-2/" mce_href="http://channel9.msdn.com/posts/deurell/ASPnet-hanganalys-med-VSTS-Test-Del-2/"&gt;Del 2 - %#&amp;amp; i att spendera tid i WinDbg och testa bort avvikelsen med VSTEST&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/tess/pages/net-debugging-demos-information-and-setup-instructions.aspx" mce_href="http://blogs.msdn.com/tess/pages/net-debugging-demos-information-and-setup-instructions.aspx"&gt;Applikationen&lt;/A&gt; jag använder som bas i dessa screencasts är utvecklad av &lt;A href="http://blogs.msdn.com/tess/default.aspx" mce_href="http://blogs.msdn.com/tess/default.aspx"&gt;Tess Ferrandez&lt;/A&gt; och visar en hel del vanligt förekommande avvikelser. Lysande för att vässa era debugging och testkunskaper! Kan ni designa tester för att fånga samtliga avvikelser? Kan ni använda denna kunskap för att inte designa in dessa i er nästa arkitektur? Så klart ni kan... Öva, öva, öva! :-)&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: gray; mso-themecolor: background1; mso-themeshade: 128"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;I used to rule the world&lt;BR&gt;Seas would rise when I gave the word&lt;BR&gt;Now in the morning I sleep alone&lt;BR&gt;Sweep the streets I used to own...&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8970124" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/deurell/archive/tags/Test/default.aspx">Test</category><category domain="http://blogs.msdn.com/deurell/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Fr_26002300_228_3B00_schast+i+Bandhagen/default.aspx">Fr&amp;#228;schast i Bandhagen</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Screencast/default.aspx">Screencast</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Arkitektur/default.aspx">Arkitektur</category></item><item><title>Scrum i praktiken med Björn Eriksen</title><link>http://blogs.msdn.com/deurell/archive/2007/09/22/scrum-i-praktiken-med-bj-rn-eriksen.aspx</link><pubDate>Sat, 22 Sep 2007 09:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5049050</guid><dc:creator>mikaeld</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/deurell/comments/5049050.aspx</comments><wfw:commentRss>http://blogs.msdn.com/deurell/commentrss.aspx?PostID=5049050</wfw:commentRss><description>&lt;P&gt;Björn har tagit fram en cool &lt;A class="" href="http://www.jonssonlepp.se/Utbildning/Kurs/?CourseID=258" mce_href="http://www.jonssonlepp.se/Utbildning/Kurs/?CourseID=258"&gt;tvådagarskurs i Scrum/XP&lt;/A&gt;&amp;nbsp;som är utformad på ett sätt som gör mig både avundsjuk och stolt! Jag får inte sällan frågor om att köra utbildning med just denna inriktning. Första dagen en ordentlig genomkörare av Scrum och andra dagen&amp;nbsp;komplettera med engineering practices från XP&amp;nbsp;och haka på&amp;nbsp;verktygsstöd&amp;nbsp;med &lt;STRONG&gt;BÅDE&lt;/STRONG&gt; VSTS/TFS &lt;STRONG&gt;OCH&lt;/STRONG&gt; &lt;A class="" href="http://weblogs.asp.net/rosherove/archive/2007/06/04/alt-net-alternative-tools-and-approaches-to-mainstream-net.aspx" mce_href="http://weblogs.asp.net/rosherove/archive/2007/06/04/alt-net-alternative-tools-and-approaches-to-mainstream-net.aspx"&gt;ALT.net&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Björn kommer att jobba som MCT/ATE&amp;nbsp;instruktör&amp;nbsp;på TechEd i&amp;nbsp;Barcelona, hugg tag i honom, bjud honom på tapas/öl och muta till er kursmaterialet... Eller gå kursen!!!&lt;/P&gt;
&lt;P&gt;Bra jobbat Björn!!! You rock!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5049050" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/deurell/archive/tags/Test/default.aspx">Test</category><category domain="http://blogs.msdn.com/deurell/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/deurell/archive/tags/XP/default.aspx">XP</category></item><item><title>Micke lär sig mocka...</title><link>http://blogs.msdn.com/deurell/archive/2007/01/29/micke-l-r-sig-mocka.aspx</link><pubDate>Mon, 29 Jan 2007 21:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1690665</guid><dc:creator>mikaeld</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/deurell/comments/1690665.aspx</comments><wfw:commentRss>http://blogs.msdn.com/deurell/commentrss.aspx?PostID=1690665</wfw:commentRss><description>&lt;p&gt;En härlig sak med mocking är att det samtidigt som jag får sköna unittests (utan integrationsstuff...) alltid får mig att snäppa upp min design. Mocking frameworks som NMock är bra men det går alldeles utmärkt att lämna dessa på hyllan och göra det hela själv... Och även om ni använder dem så måste ni ändå lura ut hur ni skall trixa in mockobjektet... Det viktigaste är ändå designen och det är oftast tre designval att välja mellan för att trycka in vårt fuskobjekt.... (Ingen hjärnkirurgi...)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-&amp;nbsp;Dependency injection (Släng in mockobjektet i aktuell konstruktor)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; Idol2007VotingService&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; IVotingService remoteVotingService;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; Idol2007VotingService(IVotingService votingService)&lt;br /&gt;{&lt;br /&gt;remoteVotingService &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; votingService;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;Det kassa med detta är att det bryter inkapslingen. Kan man leva med detta? Oftast... Om inte...&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;strong&gt;&lt;font face="Verdana" size="2"&gt;- Använd ett factoryobjekt&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; Idol2007VotingService&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; IVotingService remoteVotingService;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; Idol2007VotingService()&lt;br /&gt;{&lt;br /&gt;remoteVotingService &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; ServiceFactory.CreateRemoteVotingService();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; ServiceFactory&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt; shouldCreateRemoteService &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; IVotingService CreateRemoteVotingService()&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt;(shouldCreateRemoteService == &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; RemoteService();&lt;br /&gt;}&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; MockService();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;Det kassa med detta är att vi får ett dependency till test från vår produktionskod (mockobjektet). Kan vi leva med det? Om inte...&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;- Endo testing (subklasser kontrollerar dependency)&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; Idol2007VotingService&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; IVotingService remoteVotingService;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; Idol2007VotingService()&lt;br /&gt;{&lt;br /&gt;remoteVotingService &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; createRemoteVotingService();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;protected&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;virtual&lt;/span&gt; IVotingService createRemoteVotingService()&lt;br /&gt;{&lt;br /&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; RemoteVotingService();&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;Nu får vi det västa från alla världar... Cool! Subklasser är ansvariga för att skapa det aktuella objektet vilket gör att testklassen bara väljer vilken klass den skall skapa (Mocken) medan produktionskoden kör med basklassen (det riktiga objeketet)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;Fördelar med endo testing:&lt;br /&gt;- All testkod är inkapslad i subklasser (inte del av produktionskod)&lt;br /&gt;- Snygg och klar gräns mellan test och produktionskod&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;- Klassen gör det den ska och vet inte om någonting om test&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;Micke erkänner:&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face="Verdana" size="2"&gt;När jag läste GOF på Universitetet kände jag mig ofta helt korkad. Jag kunde läsa ett stycke sådär en 10-15 gånger, förstå alla enskilda ord, men samtidigt inte ha en aning om vad det stycke jag just läst egentligen betydde. Jag såg mig själv lämna programmeringsbranschen för att istället satsa på grönsaksdisken på Matpiraten ända tills jag upptäckte &lt;a href="http://www.oreilly.com/catalog/hfdesignpat/"&gt;"Head First Design Patterns"&lt;/a&gt;. Helt plötsligt förstod jag! Att man kunde göra något så enkelt... Så svårt... GOF, ni var nära att få mig att sortera morötter... Men ni lyckades inte! Sweet!&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1690665" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/deurell/archive/tags/NMock/default.aspx">NMock</category><category domain="http://blogs.msdn.com/deurell/archive/tags/Test/default.aspx">Test</category></item><item><title>UnitTest Kata from MSF Agile Essentials</title><link>http://blogs.msdn.com/deurell/archive/2007/01/28/unittest-kata-from-msf-agile-essentials.aspx</link><pubDate>Sun, 28 Jan 2007 21:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1690660</guid><dc:creator>mikaeld</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/deurell/comments/1690660.aspx</comments><wfw:commentRss>http://blogs.msdn.com/deurell/commentrss.aspx?PostID=1690660</wfw:commentRss><description>&lt;P&gt;Ni som varit med på UnitTest Katan från mina workshops och är intresserade av hur klasserna såg ut efter showen slutade kan kolla här! Ni kan ju gärna fortsätta refactoringresan (finns en hel del roliga saker att fixa till innan vi kan få deg för den... ;-)). Unittesterna följer &lt;A href="http://weblogs.asp.net/rosherove/"&gt;Roy Osheroves&lt;/A&gt; lysande namnsättningsstandard (&lt;STRONG&gt;MethodName_StateUnderTest_ExpectedBehavior()&lt;/STRONG&gt;) som rockar när ni har 500 unittests och enkelt vill få en överblick av vad "¤#% klassen skall göra... Glöm inte att separera logik (unittest) från integration (allt annat; ado fippel, webservices, mainframes, hårtorkar). Mocka bort det så får ni schyssare design på en gång (hey, ännu en sak som en riktig Arkitekt borde designa in i en leading shadow om några teammedlemmar behöver hjälp på resan...). Om det är otroligt meckigt att mocka det aktuella objektet, FUSKA, eller strunta i det... Det är ingen lag, ni kommer inte hamna i fängelse... I PROMISE! En del saker är ett %¤&amp;amp;# att mocka och det är inte alltid värt det...&lt;/P&gt;
&lt;P&gt;Idag gick vi över 2200 visits på bloggen under januari (17220 hits). Tack för att jag hela tiden får lära mig nya saker av er och för att ni orkar läsa mina fummliga minnesanteckningar! En resa kvar till &lt;A href="http://blogs.msdn.com/tess/"&gt;Tess Ferrandez&lt;/A&gt; nivå men... Jag jobbar på det... Jag har världens bästa jobb!!! :-)&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/SPAN&gt; Bowler;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/SPAN&gt; Microsoft.VisualStudio.TestTools.UnitTesting;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/SPAN&gt; BowlerTest&lt;BR&gt;{&lt;BR&gt;[TestClass]&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/SPAN&gt; Bowler&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; Game game;&lt;BR&gt;&lt;BR&gt;[TestInitialize]&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; InitBowler()&lt;BR&gt;{&lt;BR&gt;game &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/SPAN&gt; Game();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;[TestMethod]&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; Bowl_OnePinDown_Scores1()&lt;BR&gt;{&lt;BR&gt;game.Roll(1);&lt;BR&gt;Assert.AreEqual(1, game.Score);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;[TestMethod]&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; Bowl_20roundsAllOnes_Scores20()&lt;BR&gt;{&lt;BR&gt;RollMany(20, 1);&lt;BR&gt;Assert.AreEqual(20, game.Score);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; RollMany(&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; roundsToRoll, &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; pinsDown)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; currentRound &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; 0; currentRound &amp;lt; roundsToRoll; currentRound++)&lt;BR&gt;{&lt;BR&gt;game.Roll(pinsDown);&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;[TestMethod]&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; Bowl_SpareAndFive_Scores20()&lt;BR&gt;{&lt;BR&gt;game.Roll(6);&lt;BR&gt;game.Roll(4);&lt;BR&gt;game.Roll(5);&lt;BR&gt;RollMany(17, 0);&lt;BR&gt;Assert.AreEqual(20, game.Score);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;[TestMethod]&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; Bowl_TwoFourAndStrikeAndFiveTwo_Scores30()&lt;BR&gt;{&lt;BR&gt;game.Roll(2);&lt;BR&gt;game.Roll(4);&lt;BR&gt;game.Roll(10);&lt;BR&gt;game.Roll(0);&lt;BR&gt;game.Roll(5);&lt;BR&gt;game.Roll(2);&lt;BR&gt;RollMany(14,0);&lt;BR&gt;Assert.AreEqual(30,game.Score);&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/SPAN&gt; Bowler&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/SPAN&gt; Game&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt;[] rounds &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt;[21];&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; currentRound;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; Score&lt;BR&gt;{&lt;BR&gt;get&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; score &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; 0;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; frameIndex &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; 0;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; currentFrame &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; 0; currentFrame &amp;lt; 10; currentFrame++)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/SPAN&gt; (isStrike(frameIndex))&lt;BR&gt;{&lt;BR&gt;score += strikeScore(frameIndex);&lt;BR&gt;}&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/SPAN&gt; (isSpare(frameIndex))&lt;BR&gt;{&lt;BR&gt;score += spareScore(frameIndex);&lt;BR&gt;}&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/SPAN&gt;&lt;BR&gt;{&lt;BR&gt;score += frameScore(frameIndex);&lt;BR&gt;}&lt;BR&gt;frameIndex += 2;&lt;BR&gt;}&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/SPAN&gt; score;&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/SPAN&gt; isStrike(&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; frameIndex)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/SPAN&gt; rounds[frameIndex] == 10;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; spareScore(&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; frameIndex)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/SPAN&gt; 10 &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; rounds[frameIndex &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; 2];&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/SPAN&gt; isSpare(&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; frameIndex)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/SPAN&gt; rounds[frameIndex] &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; rounds[frameIndex &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; 1] == 10;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; strikeScore(&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; frameIndex)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/SPAN&gt; 10 &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; rounds[frameIndex &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; 2] &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; rounds[frameIndex &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; 3];&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; frameScore(&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; frameIndex)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/SPAN&gt; rounds[frameIndex] &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; rounds[frameIndex &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/SPAN&gt; 1];&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/SPAN&gt; &lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/SPAN&gt; Roll(&lt;SPAN style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/SPAN&gt; pinsDown)&lt;BR&gt;{&lt;BR&gt;rounds[currentRound] &lt;SPAN style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/SPAN&gt; pinsDown;&lt;BR&gt;currentRound++;&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;FONT face=Verdana color=#808080 size=2&gt;&lt;EM&gt;I, I was only wondering &lt;BR&gt;If you could ever change your mind &lt;BR&gt;You could give it up but soemthing might happen &lt;BR&gt;It's all too much but something might happen &lt;BR&gt;You'll break this cup but something might happen &lt;BR&gt;&lt;BR&gt;So break this cup 'cause something might happen...&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1690660" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/deurell/archive/tags/Test/default.aspx">Test</category></item><item><title>Jet Brains</title><link>http://blogs.msdn.com/deurell/archive/2006/12/14/jet-brains.aspx</link><pubDate>Thu, 14 Dec 2006 21:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1690566</guid><dc:creator>mikaeld</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/deurell/comments/1690566.aspx</comments><wfw:commentRss>http://blogs.msdn.com/deurell/commentrss.aspx?PostID=1690566</wfw:commentRss><description>&lt;P&gt;JetBrains har precis släppt &lt;A href="http://www.jetbrains.com/resharper/"&gt;Resharper 2.5&lt;/A&gt;. Så bra att jag lagt bort min gamla trogna Visual Assist... Det jag älskar (förutom det att man aldrig behöver fippla med musen för att göra sitt jobb utan utnyttja tangentbordet som ändå är precis under fingrarna) är integrationen mot NUnit och csUnit, refactoringstödet och... Ja... Testa själva... ;-)&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#808080&gt;I want to go out tonight.&lt;BR&gt;Cut me a little closer to the city lights.&lt;BR&gt;Levitation ain’t your only friend.&lt;BR&gt;Levitation coming back again.&lt;BR&gt;You feel a burning in your body core.&lt;BR&gt;It’s a yearning that you can’t ignore.&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1690566" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/deurell/archive/tags/Test/default.aspx">Test</category></item></channel></rss>