Noch immer ein Geheimtipp? Microsoft Fakes auf der #dwx14

Mittlerweile sollte eigentlich jeder, der mit Visual Studio arbeitet, vom Microsoft Fakes Isolation Framework wissen. Es ist zwar noch immer lediglich in der Premium und der Ultimate SKU integriert, dafür aber arbeitet es nahtlos mit dem Visual Studio zusammen und ermöglicht wahre Zauberkunststücke beim Testen von .NET Komponenten. Im Vergleich zu bekannten Mocking Frameworks wie z.B. Rhino Mocks, moq oder NSubstitute verzeichnet Google Trends immerhin ein Ansteigen der Suchanfragen im Zusammenhang mit Microsoft Fakes.

Das Interesse an Rhino Mocks scheint demnach eher abnehmend zu sein sein, moq - eines der ältesten Frameworks - hält sich seit ca. 2011 auf konstant hohem Level. Das Interesse an Fakes schwankt zwar, bewegt sich aber immerhin auf gleichem Level wie das an NSubstitute, das seit Ende 2011 kontinuierlich steigt.

In dieser Session auf der #dwx14 wird den Interessierten und Einsteigern in dieses Thema ein erster Einblick gezeigt, so dass im Anschluss mit ungebremster Motivation von egal welcher Richtung nach Microsoft Fakes migriert werden kann. :)

 

Die #dwx13 – Ein geglücktes Experiment?

Die Neue Mediengesellschaft lud dieses Jahr unter dem Titel “Developer Week 2013” Interessierte aus den Sparten .NET Entwicklung, Mobile Entwicklung und Web-Entwicklung zu einer Woche gespickt mit spannenden Themen und präsentiert von 120 Speakern nach Nürnberg ein. Erstmalig wurden dazu die drei Konferenzen MDC, WDC und DDC zusammengelegt und boten somit Entwicklern wie auch Testern, Managern und Designern die Chance, auch Abseits ihrer Komfortzone einfach mal schnuppern zu gehen.

Und das hat gewirkt. Die Resonanz aus dem Publikum hat gezeigt, dass es die Besucher auch zu themenfremde Gebiete gezogen hat. Die Neugier auf Technologien, die ansonsten weniger den eigenen Werkzeugkoffer füllen, hat die Entscheidung im nachhinein gerechtfertigt: Aus dieser Sicht ist das Experiment geglückt! Es zeigt aber auch, dass antrainiertes Scheuklappen-Denken langsam aufweicht und die Grenzen verschwimmen. Da beschäftigt sich der Java-Entwickler auf einmal mit Windows Clients und der Web-Entwickler entwirft Oberflächen für Smartphones.

Windows Entwickler freuen sich über Cross Plattform Development und alle lechzen nach sozialer Kompetenz. Wo früher die abgestandene Cola und die kalte Pizza Schreibtische von übernächtigten Entwickler zierten, wird heute nach der idealen Life-Work-Balance geforscht und irgendwo konnte man lesen: Weibliche Softwareentwicklerinnen trinken Bionade und ernähren sich vegan. Software Development ist hipp und so sind es auch die Tools, die Hardware und letztlich auch die Konferenzen.

Da weichen Bullet-Point Listen humoristischen Slideshows auf Megaleinwänden und es werden Touchdisplays smarter Devices mit modernen Projektoren an die Wand geworfen. Die Speaker werden zuvor mit Funkmikrofonen verkabelt und haben eine Stunde lang die Chance, sich wie Stars auf einer großen Bühne zu fühlen. Der eine oder andere hat die Gelegenheit auch genutzt und konnte dabei ein reichhaltiges Repertoire an zum Teil hochspezialisiertem Know-How präsentieren. Um Gauß gerecht zu werden sei aber auch erwähnt, dass das nicht allen gelungen ist.

Bei 120 Speakern ist es kaum möglich, ausschließlich bekannte Gesichter mit salonfähigen Themen auf das Publikum loszulassen. Während sich so auch Neueinsteiger freuen konnten, die Gelegenheit zu bekommen sich auf einer solchen Plattform zu profilieren, hatte dann halt derjenige Pech, der durch seine Session-Auswahl zumeist an die unerfahreneren Speaker geraten ist. So richtig polarisiert hat eigentlich keiner; lediglich der Vergleich zwischen Nicht-Clean-Code-Developern und Meth-Abhängigen in der Abschluss-Keynote von Ralf Westphal stieß auf Befremden. Aber auch das konnte den Inhalt der bilderreichen Präsentation gegen systemrelevante Größen nicht überschatten.

Unterm Strich lässt sich auf jeden Fall sagen: Die #dwx13 war ein geglücktes Experiment, das mit hochwertiger, technischer Unterstützung - und mit dem NCC Messezentrum auch in einer exklusiven Location - eine Konferenz der Superlative aus dem Boden gestampft hat! Die Vielfältigkeit der Sessions ließ kaum zu wünschen übrig und der Kontakt zu sowohl den Speakern als auch den Ausstellern führte zu interessanten Diskussionen und dem Austausch von Ideen und vielleicht sogar neuen Geschäftskontakten. Optimiert werden kann hier nur im Detail: Exklusive Abendveranstaltungen für ausschließlich “geladene Gäste” wirken selbst für hippe Entwickler etwas elitär und die ständige Suche nach den Sessions könnte entfallen, gäbe es eine eindeutigere Zuordnungen zu den Räumen – nicht jeder weiß wo Shanghai liegt… in dieser Hinsicht hat das NCC Messezentrum nicht nur das Treppenhaus mit Hogwarts gemein.

Die TOP TECHNOLOGIES hat sich riesig gefreut, an dem Event teilnehmen und dabei auch eigene Themen rund um Softwarearchitektur und –entwicklung präsentieren zu können. Auch im Mainstream konnten sich Themen wie z.B. die Near Field Communication (mit Windows 8 und Windows Phone 8), Testing mit dem eher wenig bekannten Microsoft Fakes Isolation Framework oder auch die an Einsteiger gerichtete Architektur-Session zum Thema Open/Closed Principle behaupten, fanden großen Anklang beim Publikum und führten zugleich zu neuen Anregungen. So soll es ja auch sein.

In diesem Sinne auch von uns ein ganz herzliches Dankeschön an die Besucher der #dwx13 im Allgemeinen und unserer Sessions im Speziellen! Natürlich gilt unser Dank auch der gelungenen Organisation der Konferenz und der wunderbaren Referenten-Betreuung!

Bis zur nächsten Developer Week in 2014.

Microsoft hört zu. The Power of Fakes finally unleashed!

Wer diesen Blog regelmäßig verfolgt, wird bemerkt haben, dass wir ein reges Interesse am Microsoft Fakes Isolation Framework zeigen. Hier eine kurze Auflistung der Artikel, die es sich lohnt in diesem Zusammenhang mal zu überfliegen. Danach kommt die News des Jahres!

Und hier die News des Jahres

Nachdem sich fast 1.500 Benutzer auf uservoice.com dafür ausgesprochen haben, dass das Microsoft Fakes Isolation Framework nicht nur in der Ultimate Edition verfügbar sein sollte, hat Microsoft entschieden, Fakes mit dem Update 2 für Visual Studio 2012 auch für die Premium Version verfügbar zu machen! Das ist insbesondere deshalb eine vernünftige Entscheidung, da sich Fakes anderenfalls bereits mittelfristig zu einem Rohrkrepierer entwickelt hätte. Der Grund: Der Vorgänger Moles funktioniert unter Visual Studio 2012 nicht mehr und eine Migration zu Fakes brachte niemandem etwas, der nicht mit der Ultimate Edition arbeitet. Die Unit Tests, die Fakes einsetzen, funktionierten nicht einmal mehr in der Ausführung unter anderen Editionen als Ultimate. Und das können sich viele Teams schlichtweg nicht leisten.

Brian Harry schreibt in seinem aktuellen Blogartikel im Zusammenhang mit dem Update 2 mehr darüber.

Artikel dotnetpro 02/2013: Manchmal hilft nur noch Schwindeln. Das Microsoft Fakes Isolation Framework

“Schreibst Du noch Boiler Plate Code, oder testest Du schon?” Wer sich hier angesprochen fühlt und sich schon lange fragt, wie Unit Tests einfacher umzusetzen sind sobald es um Dateizugriffe, Datenbanken, Sharepoint & Co geht, der wird sich über den Artikel zum Microsoft Fakes Isolation Framework in der aktuellen Ausgabe der dotnetpro freuen.

Übersichtlich und auf den Punkt gebracht gibt es hier einen Einstig in Stubs und Shims. Mehr darüber hier: http://www.dotnetpro.de/articles/onlinearticle4355.aspx.

Viel Spaß beim Lesen!

Tipp

Passend dazu gibt es auch noch auf Vimeo eine Aufzeichnung der Session “Visual Studio Evolution – Unit Testing und das Microsoft Fakes Framework” hier: http://vimeo.com/51921293.

Update: Alles kostenlos: Wissen. Prüfung. HTML5. CSS3.

Windows 8 hat den Markt erreicht. Windows Phone 8 ist ebenfalls auf einem sehr guten Weg. Und seit dem überlegen Softwareentwickler, wie sich das auf sie auswirkt. Denn viele sind noch nicht auf den HTML5 Zug aufgesprungen und zögern derzeit noch, den Weg mitzugehen: Immerhin ist der Wissensaufbau mit Aufwand und i.d.R. auch mit Kosten verbunden.

Die gute Nachricht: Die Kosten übernimmt Microsoft, und für den Aufwand wurde alles getan, um Softwareentwicklern den schnellen und einfachen Einstieg in die neuen Technologien zu ermöglichen.

Unter http://www.microsoft.com/learning/en/us/html5-offer.aspx ist es möglich, einen kostenlosen Gutschein für die Prüfung 70-480 zu erhalten (Programming HTML5 with Javascript and CSS3).

Für eine optimale Vorbereitung zu dieser Prüfung sorgt Microsoft zudem mit einem kostenlosen Kurs, der sich über 6 Module erstreckt und dabei folgende Themen beleuchtet:

  1. HTML Semantic Structure
  2. CSS3 Selectors and Style Properties
  3. Advanced Layout and Animation
  4. JavaScript Core Capabilities
  5. DOM Interactions
  6. Advanced Topics

Jedes Modul umfasst dabei Video-Trainings, Code Samples und Lernzielkontrollen. Für die Teilnahme an den Modulen gibt es Punkte, die dem eigenen Konto in der Microsoft Virtual Academy gutgeschrieben werden.

Und nun:

Viel Spaß beim Lernen, Zertifizieren und dem erfolgreichen Einstieg in den Microsoft Store mit modernen, intuitiven und produktiven Apps!

[Update]

Nachdem vor wenigen Tagen verkündet wurde, dass die Vouchers nach einem überwältigenden Ansturm aufgebraucht seien, hat Microsoft das Kontingent jetzt erneut aufgestockt. Es gilt wie zuvor auch: Verfügbarkeit der Gutscheine bis Ende März oder bis sie erneut aufgebraucht sind.

Überblick über das komplette Angebot

  1. Free Exam - Get a free voucher to take exam 70-480: Programming in HTML5 w/ JavaScript + CSS3. Find the voucher code. http://aka.ms/HTML5OfferMVA
  2. Free Training - Want to learn HTML5 or brush up before taking the exam? Sign up to access the free online HTML5 course. http://aka.ms/HTML5OfferMVA
  3. Free eBook - Courtesy of Microsoft Press, "Programming Windows 8 Apps with HTML, CSS, and JavaScript"  http://aka.ms/win8apps-ebook
  4. Free Events - Microsoft Learning Partners are holding #TechShowcase events around the world. Find and attend one near you: http://aka.ms/TechShowcase

Nachlese zur Visual Studio 2012 Evolution

Nachdem die Veranstaltung am 1.10.2012 in Düsseldorf ein voller Erfolg war, stehen nun auch die Videos aller Sessions zur Verfügung. Wer leider nicht die Gelegenheit hatte, an dem Event teilzunehmen hat nun die Möglichkeit, sich im Detail über die neuen Funktionen und Features zu informieren.

Die drei Tracks rund um Visual Studio 2012, .NET 4.5 und Services wie Azure, Windows Phone und TFS as a Service wurden dabei von 14 bekannten Speakern unterhaltsam und informativ vorgestellt. Auf folgender Website können interessierte Entwickler ihr Wissen wieder auffrischen oder sich Sessions anschauen, die sie verpasst haben.

http://www.microsoft.com/germany/msdn/events/vs-evolution-2012/default.aspx

Gratis E-Book

Wer sich darüber hinaus passend zur Evolution Session Unit Testing & Fakes noch intensiver mit dem Thema Testing mit dem Visual Studio 2012 auseinandersetzen möchte, dem sei ein kostenloses E-Book des Pattern & Practices Team von Microsoft empfohlen, das hier heruntergeladen werden kann.

Slides und Demos zur Visual Studio 2012 Evolution

Die Folien und auch die Demos zu den Themen Unit-Testing und Fakes von der Visual Studio 2012 Evolution können bereits jetzt hier heruntergeladen werden.

 

 

 

Das war die Visual Studio 2012 Evolution

... oder hat sie gerade erst begonnen?

Am 1.10.2012 fand in Düsseldorf der Visual Studio 2012 und .NET 4.5 Launch-Day statt. Dabei habe ich mich sehr darüber gefreut, dass die Entscheidung über die Art der Veranstaltung gegen einen virtuellen Launch und zugunsten einer Präsenzveranstaltung fiel.

Die Zahl der Teilnehmer, die es am Montag nach Düsseldorf geschafft haben, floatet - je nachdem, wen man fragt - zwischen 550 und 700 Personen. Aber auch ohne sich an der genauen Teilnehmerzahl aufzuhalten: Die kostenlose Veranstaltung war "ausverkauft", die Konferenzräume waren voll und das Interesse des Publikums an den Themen hoch.

Alles Neue...

Neuerungen im Visual Studio 2012 und auch .NET Framework 4.5 standen naturgemäß im Vordergrund und wer im Sommer die eine oder andere Roadshow zu den Themen besucht hat (damals hieß es noch "Visual Studio goes to 11"), der wird auch viel Bekanntes vorgefunden haben. Grandios waren dabei aber auch Sessions zu beispielsweise Azure, bei der Dariusz Parys u.a. ein End-To-End Szenario von der Implementierung einer ASP.NET MVC Applikation, über die Quellcodeverwaltung im TF Service auf tfspreview.com bis hin zur Build Automation in der Cloud und dem Continuous Deployment nach Azure präsentiert hat. Azure for Website ist übrigens kostenfrei.

Frank Prengel hat wie erwartet die Fahne für Windows Phone 8 hochgehalten während Chris Binder und Neno Loje  fast schon mit Show-Charakter sehr unterhaltsam demonstriert haben, was passiert, wenn Microsoft nicht nur Drag & Drop im Web für sich entdeckt, sondern der "Kunde" auch noch den Weg auf die entsprechenden Slides von Microsoft findet: PowerPoint Storyboarding, TFS Dashboard, Exploratives Testen und der neue Feedback Client führen zur effizient arbeitenden Teams und resultieren damit in (hoffentlich) noch coolerer Software (und wenn schon nicht sexy, dann doch wenigstens qualitativ hochwertiger; die Erkenntnis, dass Softwareentwickler keine Designer sind, läßt sich spätestens seit der Einführung von WPF kaum mehr ignorieren). Und wer sich gewundert haben sollte: Natürlich sprechen Scrum-Entwickler nicht von Burnout Charts sondern von Burndown Charts. Sollte dieser freudsche Versprecher in den Webcasts herausgeschnitten werden, freue ich mich schon jetzt auf die Outtakes.

Die TOP TECHNOLOGIES hatte zudem das große Vergnügen, dem interessierten (und zahlreich erschienenen) Publikum Neues zum Thema Unit-Testing und dem Microsoft Fakes Isolation Framework näher zu bringen. Auf diesem Blog gab es schon den einen oder anderen Artikel dazu und in einer der kommenden Ausgaben der dotnetpro wird dazu noch ergänzendes Material veröffentlicht. Spannend ist neben der Unterstützung von Async & Await in Unit-Tests beispielsweise die Integration von 3rd Party Frameworks (und das bezieht sich zumindest theoretisch auf alle Frameworks), und die direkte Integration von Fakes in das Visual Studio. Somit steht dem Entwickler erstmals ein leistungsfähiges Mocking Framework ab Werk zur Verfügung. Einziger Wehrmutstropfen ist die Beschränkung auf die Ultimate Edition. Aber es hat ja auch ein paar Versionen gebraucht, bis das Unit Testing auch in die Express Versionen Einzug gefunden hat.

Quaterly Updates

Eine Änderung in dem Entwicklungsmodus der Microsoft läßt daher Hoffnung zu. Da das Developer Team intern ebenfalls nach Scrum arbeitet und in kurzweiligen Zyklen Features fertigstellt und Bugs behebt, werden Entwickler nun nicht mehr auf Major Releases alle paar Jahre angewiesen sein (oder sich auf unregelmäßige Powertools freuen), sondern von vierteljährlich erscheinenden Updates profitieren können. Dabei plant Microsoft diese bereits vor dem Release als CTP der interessierten Community zur Verfügung zu stellen. Während diese zwar nicht für den produktiven Einsatz empfohlen werden, nutzt Microsoft sie intern sehr wohl produktiv. "Eat your own dogfood" lautet da das Credo.

Das erste CTP für das geplante November Update ist bereits verfügbar, bereitet bei der Installation allerdings noch die eine oder andere Schwierigkeit. Lohnen tut sich der Blick darauf dennoch, wie ein Blogeintrag von Brian Harry zeigt.

Wer sich das Visual Studio 2012 und den dazugehörigen Team Foundation Server (oder auch gefahrlos das aktuelle CTP) genauer anschauen möchte, dem sei der kostenfreie ALM Hyper-V Server empfohlen, den man bei Microsoft hier herunterladen kann. Optimal ist der Einsatz in einem Hyper-V Server unter Windows 8, der sich als Feature problemlos nachinstallieren läßt; die Einbindung der virtuellen Maschine gestaltet sich zum einen problemlos und ist zum anderen optimal dokumentiert. Ergänzend findet sich in dem Archiv eine große Anzahl detaillierter Hands-On Labs, die einladen, alle Features einfach mal auszuprobieren. 

Alle, die leider nicht an dem Event teilnehmen konnten, werden sich übrigens darüber freuen, dass alle Sessions aufgezeichnet wurden und in ca. zwei Wochen als Webcasts zum Download angeboten werden.

In diesem Sinne: Viel Spaß und Erfolg mit Visual Studio 2012!

Die Evolution hat begonnen!

 

INotifyPropertyChanged - Das Elend hat (fast) ein Ende

Mit Visual Studio 2012 kommen neue Compiler und das .NET Framework 4.5 daher. Soweit nichts Ungewöhnliches. Natürlich gibt es auch jede Menge neue Sprachfunktionen und Bibliotheken. Besondere Aufmerksamkeit verdienen dabei die sog. Caller Info Attributes, die mit Visual Studio 2012 eingeführt werden und mit denen dem Entwickler ein eleganter Weg geöffnet wird, das PropertyChanged Event auszulösen.

Zur Auffrischung: Das Interface INotifyPropertyChanged stellt sicher, dass das PropertyChanged Event implementiert wird. Sind Klassen datengebunden, erfährt das Framework so, dass sich die Daten geändert haben. Im Setter eines jeden Properties muss dazu dieses Event ausgelöst werden; die Crux dabei ist allerdings, dass die PropertyChangedEventArgs dazu einen String-Parameter mit dem Namen des jeweiligen Properties verlangen.

Sollte sich im Nachhinein der Name ändern, kann wird es zu unerwartetem Verhalten kommen, wenn nicht daran gedacht wurde, auch den Magic String im Property Setter zu aktualisieren. Speziell dieses Thema ist mitunter schon viel diskutiert und auch in Form eines Coding Dojos der dotnetpro verarbeitet worden (Stichwort: “Unit Tests”).

Der folgende Code zeigt vereinfacht das klassische Vorgehensmodell:

 1:  public class Person : INotifyPropertyChanged
 2:  {
 3:     public event PropertyChangedEventHandler PropertyChanged;
 4:  
 5:     public string Name
 6:     {
 7:         get { return name; }
 8:         set
 9:         {
 10:             if (value != name)
 11:             {
 12:                 name = value;
 13:  
 14:                 // Call OnPropertyChanged whenever the property is updated
 15:                 RaisePropertyChanged("Name");
 16:             }
 17:         }
 18:     }
 19:  
 20:     private void RaisePropertyChanged(string member)
 21:     {
 22:         var handler = PropertyChanged;
 23:  
 24:         if (handler != null)
 25:         {
 26:             handler(this, new PropertyChangedEventArgs(member));
 27:         }
 28:     }
 29:  
 30:     private string name;
 31: }

 

Es ist nicht schwer sich vorzustellen, wie aufgebläht der Code wird sobald es nicht mehr nur um ein, sondern um spürbar mehr Properties geht.

Das .NET Framework 4.5 bietet hierfür eine Lösung an, indem es mit den neuen Caller Info Attributes einer aufgerufenen Methode Informationen über den Aufrufer quasi frei Haus mitzuliefert. Das folgende Beispiel verdeutlicht das anhand des CallerMemberName Attributs:

 1: protected void RaisePropertyChanged([CallerMemberName] string member = "")
 2: {
 3:   var handler = PropertyChanged;
 4:  
 5:   if (handler != null)
 6:   {
 7:     handler(this, new PropertyChangedEventArgs(member));
 8:   }           
 9: }

Der Methode RaisePropertyChanged muss nun nicht mehr der Name des Properties übergeben werden. Durch das Attribut CallerMemberName, das im NameSpace System.Runtime.CompilerServices enthalten ist, geschieht dies implizit.

Eine Möglichkeit, um nun die neue RaisePropertyChanged Methode nicht in jeder Klasse implementieren zu müssen, ist übrigens ganz einfach die Vererbung.

 1: public abstract class BaseBO : INotifyPropertyChanged
 2: {
 3:     public event PropertyChangedEventHandler PropertyChanged;
 4:  
 5:     protected void RaisePropertyChanged([CallerMemberName] string member = "")
 6:     {
 7:         var handler = PropertyChanged;
 8:  
 9:         if (handler != null)
 10:         {
 11:             handler(this, new PropertyChangedEventArgs(member));
 12:         }           
 13:     }
 14: }

 

Damit reicht es aus, die betroffenen Klassen einfach von der Klasse BaseBO abzuleiten (bei uns werden i.d.R. Fachobjekte an Views gebunden, daher der Name: BO = Business Object). Das reduziert den Aufwand für die Entwicklung von datengebundenen Klassen auf ein Minimum.

Und nun?

Und nun werden noch Wetten angenommen, ob in .NET 5 dann endlich einzelne Properties bis hin zu Klassen mit der Anweisung dekoriert werden können, dass die Properties im Falle einer Änderung das Event selbstständig auslösen sollen. AOP hat es bereits vorgemacht.

Stefan Lieser hat übrigens vor einiger Zeit in die Lambda-Trickkiste gegriffen und schon vor .NET 4.5 eine Lösung aufgezeigt, ohne Magic Strings das PropertyChanged Event auszulösen. Mehr dazu auf seinem Blog.

Über die Autoren

Christian Jacob ist Leiter des Geschäftsbereiches Softwarearchitektur und -entwicklung und zieht als Trainer im Kontext der .NET Entwicklung sowie ALM-Themen Projekte auf links.

Marcus Jacob fokussiert sich auf die Entwicklung von Office-Addins sowie Windows Phone Apps und gilt bei uns als der Bezwinger von Windows Installer Xml.

Martin Kratsch engagiert sich für das Thema Projektmanagement mit dem Team Foundation Server und bringt mit seinen Java- und iOS-Kenntnissen Farbe in unser ansonsten von .NET geprägtes Team.

Aktuelle Kommentare

Comment RSS