PerSalmi.NET

Swedish .Net software developer...
# Thursday den 13 June 2013

För ett par veckor sedan körde vi ett kurstillfälle med vår .NET-kurs på Combitech där vi bland annat inkluderar testdriven utveckling med Visual Studio och C#. Eftersom den Unit Test Wizard som fanns i tidigare versioner av Visual Studio har försvunnit från 2012 versionen där enhetstestdelarna har gjorts om rejält så innebär det en del merarbete att skapa testfall för hand. Det finns visserligen sätt att plocka fram den tidigare wizarden för att generera skal till testfall och projekt om man vill, den är bortkopplad från menysystemet men kan aktiveras igen.

Det har funnits indikationer på att en ny generator för testfall är på gång och att orsaken till att den gamla togs bort var att den inte kunde fås att fungera med alternativa testramverk som nu kan användas enkelt med hjälp av plugins till den nya test runnern. Det är då intressant att en första version av en ny Unit Test Generator extension nu finns tillgänglig i Visual Studio Gallery. I första läget stödjer den bara att generera testprojekt och testfall för metoder i existerande klasser och då bara för MS-Test, men målen är klara för att man ska kunna generera kod för andra testramverk när RTM versionen kommer.

Extensionen hittar man direkt i Tools –> Extensions and Updates… om man söker på “unit test generator” eller laddar ner från länken Unit Test Generator extension.

Det man får efter installationen är en context-meny (högerklick) i kodeditorn när man är i en metod med alternativet Generate Unit Test:

image

Resultatet är att testprojekt med korrekta referenser tillsammans med testfall för metoden skapas i din solution:

image

Testkoden som genereras i testklassen är enklast möjliga, inte fylld med regioner och bortkommenterade avancerade delar som den tidigare wizarden gav. Om man genererar testfall för fler av metoderna efter hand läggs dessa i samma testklass.

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using System.Threading.Tasks;
   6:  using Microsoft.VisualStudio.TestTools.UnitTesting;
   7:  using CalculatorClassLibrary;
   8:   
   9:  namespace CalculatorClassLibrary.Test
  10:  {
  11:      [TestClass()]
  12:      public class CalculatorTests
  13:      {
  14:          [TestMethod()]
  15:          public void AddTest()
  16:          {
  17:              Assert.Fail();
  18:          }
  19:      }
  20:  }

 

Testfallen är sedan direkt färdiga att köras i Test Explorer i studion:

image

För den som vill påverka hur den genererade testkoden ser ut och namnges så finns en del enkla inställningsmöjligheter i Test-menyn:

image

image

Det ska bli intressant att följa detta tillägg framöver. Jag hoppas att det inte dröjer alltför länge innan de planerade funktionerna med stöd för alternativa testramverk och möjlighet att göra egna anpassningar för nya ramverk kommer.

Thursday, 13 June 2013 13:01:59 (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]
Utveckling | Visual Studio
# Monday den 4 August 2008
image

Karl Seguin har sammanställt och släppt sin artikelserie Foundations of Programming som e-bok, det kanske kan vara något som passar i hängmattan om man fortfarande är i semesterläge. I PDF-form är den i alla fall på närmare 80 sidor och ger en kompakt genomgång av DDD, dependency injection, enhetstester, OR-mappning och en del annat.

Monday, 04 August 2008 13:54:56 (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]
Läsning | Utveckling
# Monday den 23 June 2008

Zeta Resource EditorEftersom .NET Framework innehåller bra stöd för att översätta applikationer till olika språk med hjälp av resursfiler i Xml-format och ResourceManager så kan det vara praktiskt med ett verktyg för att hålla reda på ändringar i översättningar. Ett problem är t ex att ett projekt utvecklas i en engelsk version och man skapar då .resx-filer för engelska textsträngar, kanske gör man då en översättning till svenska eller annat språk. Sedan uppdateras projektet och fler strängar läggs till eller tas bort, när man sedan ska uppdatera de olika översättningarna är det svårt att se vilka resurssträngar som tillkommit i den engelska versionen, så man kan inte vara säker på att alla strängar översatts korrekt.

När jag uppdaterar den svenska översättningen av DasBlog jobbar jag med verktyget Zeta Resource Editor hämtat från Code Project, detta verktyg underlättar översättningen genom att presentera de båda matchande versionerna av strängar i två .resx-filer sida vid sida och markerar saknade översättningar. Tittar man bara direkt på Xml-versionerna av resursfilerna så finns det inget som säger att strängarna måste ligga sorterade eller i samma ordning i olika språkversioner, det gör det väldigt jobbigt att hitta nya eller borttagna strängar direkt i Xml-filerna så verktyget gör det mycket enklare.

När man väl har ett bra verktyg att jobba med är det bara att försöka hitta rätt ord på svenska, vilket inte alltid känns helt enkelt… Jobbar man med andra språk än svenska och engelska så har man en del andra detaljer att se upp med, se Språk är svårt.

Monday, 23 June 2008 22:42:48 (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]
.Net | Utveckling | Verktyg
# Friday den 14 March 2008

Jeff Atwood skriver om turkiska som ett exempel på hur svårt det är att hantera språkberoende i applikationer, se "Coding Horror: What's Wrong With Turkey?".

Problem med "turkiska I" har jag själv en del intressanta minnen av från ett globalt projekt. Vi byggde en produktdatabas som skulle hantera all produktinformation för en koncern, det inkluderade översatt information på ca 30 språk om mer än 2000 produkter. Ett av de lustigare problemen vi råkade på var att det var ruskigt svårt att veta om man hade ett fel eller inte... Men kundens turkiska kontor kom med massor av viktiga felrapporter under utvecklingen.

Det är nämligen skapligt svårt att se på en text om den innehåller felaktiga tecken när man inte fattar ett dugg av vad det står. Eftersom jag fortfarande inte har lärt mig turkiska så får jag illustrera med ett påhittat exempel: "ınteger" eller "ÿnteger" vilket är korrekt turkiska? Antagligen inget av det just i mitt fall, men det var den typen av fel som dök upp i texten, mycket ofta spårade vi problemen till att webbläsare inte alltid gjorde som man tänkt sig i fråga om teckenkodning. Eftersom applikationen hade börjat som en svensk lokal databas och växte från den utgångspunkten tog det lite tid innan jag hade fått det mesta av teckenkodningen under kontroll och all hantering hade konverterats till UTF-8.

Det är också lite intressant att Jeff nämner amerikanernas bekväma synsätt att det vore enklare om att körde InvariantCulture, dvs "amerikanska". Själv har jag varit med såpass länge att jag minns hur korkade vi i europa tyckte att amerikanerna var när de hade begränsat ASCII teckensettet till 127 tecken på 7-bitars ord... Inte mycket utrymme för resten av världen där inte.

Mina lärdomar efter det projektet är att kodningen av text i applikationer numera ska vara UTF-8 eller full Unicode rakt igenom och att det som stoppas in i en databas ska hamna i nvarchar-typade kolumner.

En hel del rekommenderad läsning finns på Microsofts Global Development and Computing Portal.

Friday, 14 March 2008 23:01:22 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]
Databaser | Utveckling | Webb
Blog & Contact
Per Salmi
Per Salmi
Min LinkedIn Profil

Jag arbetar på Combitech AB i Linköping med konsultuppdrag och utbildning inom Microsoft .NET området. Kontakta mig gärna om ni har frågor, behov av konsulttjänster eller är intresserade av utbildning inom .NET.

Copyright © 2017 Per Salmi

Bloggmotor: newtelligence dasBlog 2.3.12105.0

Sign In
Statistics
Total Posts: 220
This Year: 1
This Month: 0
This Week: 0
Comments: 40

Datorer
All Content Copyright © 2017, Per Salmi