Wie schreibe ich Einheitentests für eine Klasse, die von einem SerialPort abhängt?

9

Ich weiß, die kurze Antwort ist Mocks, aber alle Beispiele wären gut. Ich muss Folgendes testen können:

  1. Verbinden / trennen
  2. Empfangen von Daten in festgelegten Intervallen
  3. Pause bei der Datenübertragung, was dazu führt, dass meine Klasse versucht, die Verbindung wiederherzustellen
  4. Testen Sie, dass Ereignisse ausgelöst werden, wenn sie erwartet werden.

Als erstes dachte ich daran, eine Schnittstelle zu definieren, die einen Stream verwendet, der es mir erlaubt, meine Klasse einfach mit jedem Stream zu verbinden, den ich besser kontrollieren könnte als eine serielle Schnittstelle, und würde es mir erlauben um es programmatisch zu machen. Wenn jemand eine bessere Idee hat, würde ich es sehr schätzen.

    
Anthony Mastrean 12.05.2009, 06:27
quelle

3 Antworten

3

Klingt so, als ob Sie Integrationstests anstelle von Komponententests durchführen möchten?

Wenn Sie Komponententests meinen, könnten Sie:

  1. Erstellen Sie einen Wrapper um den seriellen Port
  2. Geben Sie dem Wrapper eine Schnittstelle, vielleicht IPort
  3. Übergeben Sie dies an die Klasse, für die ein SerialPort
  4. erforderlich ist
  5. Muck die SerialPost, die in
  6. übergeben wird
%Vor%

Jetzt können Sie die Data Retriever-Klasse testen. Wenn Sie sich dem Framework (wie dem SerialPort-Wrapper) nähern, können Sie es leider nicht testen. Das müssen Sie Integrationstests überlassen.

    
David Kiff 24.09.2009 15:36
quelle
2

Ссылка enthält einige kostenlose / Open-Source-Treiber für virtuelle COM-Ports / Redirectors, die für Ihre Tests hilfreich sein können!

    
Khurram Aziz 12.05.2009 06:33
quelle
0

Ich habe das unten erfolgreich verwendet, aber nur um die Verarbeitung der Daten und der internen Zeitsteuerungen zu testen. Dies kann der TestingClass nicht gerecht werden, die den SerialPort selbst schließt / öffnet.

%Vor%

wo:

%Vor%

HTH,     RiP

    
Richard 12.05.2009 06:36
quelle

Tags und Links