2009-08-17 13 views
1

Ich möchte meine Unit Test Assemblies optimieren. Insbesondere möchte ich sicherstellen, dass mehrere Entwickler gleichzeitig arbeiten können, ohne sich gegenseitig auf die Füße zu treten. Was ist die beste Vorgehensweise beim Erstellen von Komponententests? Eine Unit-Test-Klasse pro Real-Klasse, Unit-Tests nach Problem und nicht nach Klasse aufgeteilt, eine große Unit-Test-Klasse für alle Klassen (ich bezweifle es), etc. ??Der beste Weg, um Ihre Unit Test Assemblies zu strukturieren?

Antwort

1

Es gibt drei mögliche Vorgehensweise Unit-Tests zu organisieren:

  1. Testmethod in Testklasse pro Testklasse. Der beliebteste.
  2. Testmethode in der Testklasse pro Testvorrichtung. Minimieren Sie den Text Fixture/Tear-Down-Code.
  3. Testmethode in der Testklasse pro getestetem System (Subsystem, Modul, einige Klassen).

Normalerweise gibt es Bedarf mehr automatisierten Testanordnungen zu halten:

  • Unit-Test Assembly - mit reinem Komponententest, dh jede Einheit Testen Mocks verwenden, Test-Dumps.
  • Integrations-/Verbrauchertest-Assembly - zur Überprüfung der Integration von Systemeinheiten, überprüft, ob verbraucherkritische Funktionen ordnungsgemäß funktionieren.
2

Ich mag die eine Testklasse für eine Klassenkonvention von Java. Dies stellt sicher, dass Sie immer wissen, wo Sie einen Test finden, und die Testeinheiten sind klein genug, um viele Leute daran arbeiten zu lassen, ohne viel zu tun zu müssen, weil sie alle in einer Datei sind.

Sie können auch nur die Tests für eine Klasse ausführen, wenn Sie eine größere Testsuite haben und eng an dieser Klasse arbeiten.

0

Ich denke, der beste Weg ist, auf Verhalten zu unterscheiden. Ein Verhalten für jede Testklasse. Das bedeutet mehrere Testklassen für jede Klasse. Eine verwandte Frage mit Beispiel finden Sie here.

0

Der Ansatz, dem ich mich zugewandt habe, ist ein Kontext-Spezifikations-Stil von Komponententests, der deine Komponententests in Gruppierungen von Verhalten aufbricht; zum Beispiel, wenn ich auf einer neuen ASP.NET Web-Seite für eine Website arbeite den Jobstatus-Seite aufgerufen würde ich eine Verzeichnisstruktur wie dieses:

unit-tests -> spec_for_job_status_page 

wo spec_for_job_status_page der Ordner, der die Lösung Datei enthält, csproj-Datei und zugehörige Klassen.

Was die Struktur der Einheit Testklassen betroffen sind Ich mag eine Namenskonvention verwenden, die die Kontextspezifikation Stil wie folgt:

namespace spec_for_job_status_page 
{ 
    [TestFixture] 
    public class when_the_job_status_page_is_loaded 
    { 
     [SetUp] 
     public void context() 
     { 
      //write set-up code here for your test 
     } 

     [Test] 
     public void should_show_the_job_number() 
     { 
      //write the assertion code here. Should be a single line 
     } 
    } 
} 
Verwandte Themen