2 Stimmen

Ist NUnit das Erlernen wert?

Ich bin ein College-Student, der hier und da Programme in C# erstellt, hauptsächlich wissenschaftliche Simulationen. Macht es Sinn, NUnit zu lernen?

Ich höre immer wieder Leute darüber reden, aber ich verstehe nicht ganz, was es überhaupt ist. Ist es etwas, das jeder Programmierer verwenden sollte, oder ist es eher für große Projekte mit vielen Beteiligten geeignet?

20voto

LBushkin Punkte 124894

Testing ist ein wichtiger Bestandteil beim Schreiben von Software - jeder Art von Software. Egal, ob Sie eine kleine Routine zum Sortieren von Zahlen schreiben oder ein System zum Starten von Raumschiffen zum Mars.

Früher war es so, dass Entwickler ihren Code schrieben und dann manuell ausführten - oft in einem Debugger -, um zu überprüfen, ob er das tat, was sie erwarteten. Dies war eine schmerzhafte und mühsame Methode, um ihren Code zu testen. Es war nicht nur mühsam und schmerzhaft - es war nicht wiederholbar. Das bedeutete, dass jedes Mal, wenn Sie eine Änderung vorgenommen haben, Sie die Tests manuell wiederholen mussten und hoffen mussten, dass Sie nichts vergessen haben oder Dinge etwas anders gemacht haben. Die Qualität litt - und es gab viel Trauer und Tränen.

Schließlich realisierten die Entwickler, dass sie ein separates Programm schreiben konnten, das ihren Code ausführen konnte, indem es ihn durch die Bedingungen führte, die sie erwarteten, und diesen Code die Ergebnisse überprüfen ließen. Dinge fingen an, sich zu verbessern. Dieser Testansatz wurde oft als Testharness bezeichnet.

Das Schreiben von Testharnessen half, aber es gab viel wiederkehrenden Code - es gibt eine Menge Infrastruktur in Bezug auf das Ausführen und Überprüfen von Tests. Einige wirklich kluge Entwickler sagten jedoch: "Wir werden nicht immer wieder Boilerplate-Code schreiben... wir werden eine Bibliothek erstellen, die es für uns erledigt." Und so wurden Unit-Test-Tools wie JUnit und NUnit (und viele andere) geboren.

Diese Bibliotheken (und Tools) helfen Ihnen, Ihre Tests zu strukturieren, zu organisieren und auszuführen. Sie bieten praktische Methoden zum Überprüfen von Bedingungen, zum Auffangen und Verfolgen von Ausnahmen und zum Melden, welche Tests bestanden und welche nicht. Schließlich konnten sich die Entwickler auf den wichtigen Teil konzentrieren: das Schreiben der Tests und der Überprüfungslogik, die dazu beitragen würde, zu versichern, dass der von ihnen geschriebene Code funktioniert. Diese Tests waren wiederholbar. Sie konnten als Teil eines automatisierten Build -Prozesses gestartet werden. Sie konnten von Generation zu Generation weitergegeben und von anderen ergänzt werden, wenn neue Fehlerpunkte gefunden und behoben wurden. Sie könnten Monate und Jahre nach dem Schreiben des Originalcodes vom ursprünglichen Entwickler erneut ausgeführt werden, um sicherzustellen, dass alles noch funktioniert.

Wenn Sie vorhaben, ein erfolgreicher Softwareentwickler auf irgendeiner Ebene in jeder Organisation zu sein (auch wenn es nur Sie sind) - sollten Sie sich über - und Umarmen von Unit-Tests lernen.

Hier sind einige Ressourcen, die Ihnen auf Ihrem Weg helfen können:

7voto

PostMan Punkte 6704

Ja, du solltest es verwenden. (oder einen beliebigen Testrunner)

Tests sind meiner Meinung nach ein ziemlich wichtiger Teil des Programmierens, also wenn du (oder jemand anders) einen Teil des Codes ändert und es passiert, dass etwas später etwas kaputt geht, sollten deine Tests das aufgreifen.

Nun, so sehe ich das, ich bin immer noch neu im Unit Testing.

Ein Beispiel.

Angenommen, ich habe eine Methode

Add(int a, int b)
{
  return a + b;
}

Mein Unit Test wäre:

[Test]
public void Test001_TestAdd()
{
    Assert.IsTrue(Add(1,3) == 4);
}

Wenn jemand die Add-Methode ändern würde, sagen wir zu:

Add(int a, int b)
{
  return a * b;
}

Mein Unit Test würde fehlschlagen und könnte potenziell ein Leben retten (wenn du in der medizinischen Software arbeitest oder für die NASA), oder einen potenziellen Fehler stoppen :)

Jetzt, wenn sie Unit Tests gemacht hätten, wäre dies möglicherweise nicht passiert, ein einfaches Problem, übersehen.

3voto

Pablo Fernandez Punkte 98441

Absolut. Unit-Testing ist eines der wichtigsten Konzepte, die man in der modernen Softwareentwicklung lernen kann.

Es spielt keine Rolle, ob Ihre Programme wissenschaftliche Simulationen, Unternehmensanwendungen usw. sind, und es spielt auch keine Rolle, ob Sie in einem großen Team sind oder alleine programmieren (aber in großen Teams ist es genauso wichtig wie das Kompilieren Ihres Codes).

Ein gutes Buch, um mit dem Unit-Testing zu beginnen (für .net), ist Pragmatic Unit Testing in C# mit NUnit

2voto

Eduardo Scoz Punkte 24423

Jeder Programmierer sollte es lernen. Wird jeder Programmierer es nutzen? Wahrscheinlich nicht, aber sie sollten es trotzdem kennen.

Unit Testing ist heutzutage sehr verbreitet, und das Verständnis seiner Funktionsweise ist in jedem Projekt unerlässlich, abgesehen von den kleinen Hobbyprojekten, die Sie gerade schreiben. Nutzen Sie die Zeit, die Sie jetzt haben, und bereiten Sie sich auf Ihre Zukunft vor. Lernen Sie auch über Mock-Objekte (verwandt).

1voto

Richard Ev Punkte 50770

NUnit ist ein hervorragendes Tool, wenn Sie sich für Test-Driven Development interessieren.

Sehen Sie meine Antwort hier für einige Anmerkungen zu TDD.

Ich habe festgestellt, dass, wenn Sie eine ReSharper-Lizenz erhalten (ein Visual Studio-Plug-In, das viele Dinge tut), das Ausführen von Unit-Tests so schnell und einfach wird, dass das Schreiben von ihnen wirklich zu einer Selbstverständlichkeit wird, auch für kleine Arbeiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X