n-Develop

Thoughts and opinions about .NET, C# and other things.

n-Develop Reworked - Komplett-Überarbeitung des Blogs

Es wurde mal wieder Zeit für was Neues. Wie ihr vielleicht gemerkt habt, sieht es hier mal wieder völlig anders aus. Nein, es handelt sich nicht um ein neues WordPress-Theme oder einen Umstieg auf Joomla oder ähnliches. Ich habe in den letzten Wochen mein eigenes kleinen Blog-System entwickelt. Aber fangen wir mal von vorne an...

Wie es begann

Eine ganze Weile habe ich nach einem schönen, aber verhältnismäßig kleinen Projekt gesucht....


Warum ich Unit-Tests für Third-Party-Code schreibe

Wer TDD lernt, stellt sich erstaunlich selten die Frage, ob Unit-Tests auch für bestehende Frameworks geschrieben werden sollten. Die meisten denken höchsten einen kurzen Augenblick darüber nach und kommen zu folgender, durchaus verständlicher Antwort.

Die Korrektheit des Frameworks fällt nicht in meine Zuständigkeit. Die Entwickler des Frameworks sind selbst dafür verantwortlich, ihre Funktionen mit Unit-Tests zu testen.

Klingt absolut logisch. Und diesmal meine ich das nichtmal ironisch. :-)

Aber...

Der Grundgedanke der oben genannten Aussage ist natürlich richtig. Als einfacher Nutzer des Frameworks, bin ich...


von Nörgelei und Untätigkeit

Und schon wieder ein nicht-technischer Blog-Artikel. Und, um genau zu sein, geht es wieder um Unverständnis meinerseits. Nur dieses Mal ist es mehr als Unverständnis. Es geht um Ärgernis. Etwas, dass mich regelmäßig sprachlos und oft auch ägerlich macht.

Werden wir konkret

Was ist es nun, was mich so aufregt? Es geht um Nörgler. Und ich meine damit nicht jene, die hin und wieder Missstände sehen (oder sogar aufdecken) und diese offen ansprechen. Es geht um jene, die meckern und meckern und nörgeln, aber nicht die Konsequenzen ziehen. Denn genau darum geht es. Um Konsequenzen.

Hier ein typisches Beispiel: Jedes Unternehmen / jede Abteilung hat...


von Mut, Chefs und Menschen

In den letzten Tagen und Wochen führte ich auffällig oft Gespräche mit gut ausgebildeten Leuten, die mich ehrlich verblüfft haben. Oft genug allerdings mehr im Negativen als im Positiven.

Im letzten Gespräch, von dem ich euch heute berichten möchte, ging es um Chefs, unsere "Leistungsgesellschaft" und fehlendem Mut.

Ich unterhielt mich mit einer Dame, die seit 7 Jahre in der Werbebranche tätig ist. In Laufe des Gesprächs erzählte sie, dass sie regelmäßig 60 Stunden pro Woche arbeitet, allerdings nur 40 Stunden bezahlt bekommt. Überstunden werden weder bezahlt, noch abgefeiert. Arbeit an Sonn- und Feiertagen ist selbstverständlich. Das sei nunmal so in der Werbebranche. ...


Arbeitgeber, Sicherheit und Traumjobs

Ich nutze die Möglichkeiten dieses Blogs mal wieder, um ein paar nicht-technische Töne loszulassen. Also worum soll es gehen? Heute soll es um Arbeitgeber und die Wahl des selbigen gehen.

seltsames Sicherheitsempfinden

In den letzten Monaten habe ich mit einigen Menschen Gespäche zu beruflicher Entwicklung geführt. Dabei kam wiederholt die Aussage "Es ist nicht gerade mein Traumjob, aber ich bin in einem Unternehmen angestellt in dem man alt werden kann. Ein sicherer Job und ein passables Einkommen. Mehr brauche ich nicht." Damit wir uns richtig verstehen: Wir reden hier von hochqualifizierten IT-Fachkräften in der Altersklasse unter 40 Jahren. Diese Aussagen machen mich immer wieder sprachlos. Wer ein bisschen den IT-Markt im Auge hat, ...


nopCommerce: Open Source E-Commerce mit .NET (Teil 1)

Wenn man sich nach Open Source-Lösungen für E-Commerce umschaut, findet man meistens Magento, Shopware, PrestaShop, osCommerce und noch einige andere. Was haben diese Plattformen gemeinsam? Sie sind in PHP entwickelt. Menschen wie ich, die PHP nicht für eine Programmiersprache, sondern eher für ein Folterinstrument halten, sind von diesem Fakt selten begeistert. Gibt es denn keine vernünftige E-Commerce-Plattform, die man auch als .NET-Entwickler komfortabel nach den eigenen Wünschen erweitern kann? Doch, die gibt es. nopCommerce ist eine E-Commerce-Lösung, die auf ASP.NET MVC basiert. Sie verfolgt ein Plug-in-Konzept, dass es Entwicklern recht leicht macht, eigene Erweiterungen modular zu entwickeln. In dieser Beitragsreihe möchte ich nopCommerce mit seinen Stärken und natürlich auch mit seinen Schwächen vorstellen. Ihr braucht also keine Angst haben, dass es sich hier um eine Verkaufsveranstaltung handelt. :-)

nopCommerce wirbt auf der Website damit, die größte .NET-E-Commerce-Plattform zu sein. Wie wir bereits festgestellt haben, ist das allerdings auch nicht besonders schwierig, da alle großen Konkurrenten auf PHP basieren. Also was kann diese Plattform wirklich?...


Memo an mein jüngeres Ich

Beim Surfen durchs Web, bin ich mal wieder auf einen Blog-Artikel zum Thema "What advice would you give your younger (programmer) self?" gestoßen. Das ist ja im Grunde keine neue Idee. Aber diesmal möchte auch ich meinen Senf dazu abgeben. Denn wenn man so einige Jahre zurück blickt, denkt man sicher schon mal "Ach, hätte ich diese Programmiersprache nur früher entdeckt" oder "So würde ich heute nicht mehr programmieren". Diese Gedanken möchte ich nun auch mal "zu Papier" bringen. Hier also einige Ratschläge an mein jüngeres Ich:

Moin Lars.

Warscheinlich hast du gerade mit dem Programmieren begonnen. Java. Keine schlechte Wahl, in meinen Augen. Und OOP ist auch ein Vorgehen, mit dem du in den nächsten Jahren richtig liegen wirst. Bevor du dich allerdings mit sogenannten "fortgeschrittenen Techniken" beschäftigst, lerne Java. Programmiere einfach mal drauf los. Mache Fehler und lerne daraus. Die Standard API von Java sollte dir in Mark und Bein übergehen...


xUnit-Tests und Console.WriteLine

Wie bereits in meinem letzten Artikel Test-Frameworks im Vergleich beschrieben, bin ich für Unit-Tests von MSTest auf xUnit umgestiegen. Während der Test-Entwicklung kam ich auch zu dem Punkt, wo ich Infos im Test ausgeben wollte. Wie von MSTest gewohnt habe ich natürlich erstmal das gute alte Console.WriteLine probiert. Leider erfolglos. Nichts im Output-Window, nichts in den Test-Results.

Eine ausgiebige Suche auf Stack Overflow brachte mir die Lösung: Um Output in xUnit-Tests zu erzeugen, lässt man sich eine Instanz ...


Test-Frameworks im Vergleich: xUnit, NUnit und MSTest

Titel Testframeworks

Das Internet ist voll von Vergleichen der beliebtesten Test-Frameworks. Warum genau muss ich hier dann auch so einen Vergleich starten? Weil mir persönlich bei den meisten Vergleichen die Praxis fehlt. Hier soll es nicht einfach nur um den Vergleich von Attributen und Assert-Methoden gehen. Denn genau so sehen viele Vergleiche aus. Da werden einfach nur Tabellen "hingeklatscht" und gesagt, dass xUnit keine Kennzeichnung von Test-Klassen benötigt. Aber so richtig hilft einem so eine Tabelle nicht weiter, wenn man nach einem neuen Test-Framework sucht, oder das Look-and-Feel eines Test-Frameworks erleben will. Natürlich werde auch ich hier die verschiedenen Attribute der Frameworks nennen, aber mir geht es viel mehr darum, den entstandenen Code mit den unterschiedlichen Frameworks zu zeigen.

Deswegen wollen wir hier ein einfaches Beispiel sowohl mit MSTest, mit NUnit, als auch mit xUnit umsetzen. Die folgende Klasse implementiert ein Bankkonto und soll einigen Tests unterzogen werden....


Über Enum-Values iterieren

Hin und wieder kann es vorkommen, dass man gerne über die Werte einer Enum iterieren würde, um diese beispielsweise in eine Liste mit Auswahlmöglichkeiten umzuwandeln oder die der Werte einfach auszugeben. In diesem Artikel wollen wir genau das machen. Betrachten wir folgendes Beispiel:

Wir haben eine Enum, deren Werte Freizeitbeschäftigungen repräsentieren. Der User soll in einer Konsolenanwendung eine Auswahltreffen können. Um nicht die, oft sehr technischen Namen der Enum-Werte ausgeben zu müssen, versehen wir jeden Wert mit einem Description-Attribut.

enum LeisureTime
{
    [Description("Learn? Seriously?")]
    Learn,
    [Description("Being lazy")]
    DoNothing,
    [Description("Shall we dance?")]
    Dance,
    [Description("Have a cup of coffee")]
    DrinkCoffee,
    [Description("Party hard!")]
    Party
}

Um den Wert des Description-Attributes auch komfortabel abfragen...