Inhaltsverzeichnis:

Können Sie statische Methoden mit Komponenten testen?
Können Sie statische Methoden mit Komponenten testen?

Video: Können Sie statische Methoden mit Komponenten testen?

Video: Können Sie statische Methoden mit Komponenten testen?
Video: Softwarearchitektur mit Komponenten 2024, November
Anonim

Zu Unit-Test Sie muss ein kleines stück mitnehmen Ihre Code, verdrahten seine Abhängigkeiten neu und Prüfung es isoliert. Das ist schwer mit statische Methoden , nicht nur für den Fall, dass sie auf den globalen Zustand zugreifen, sondern sogar wenn sie rufen einfach andere an statische Methoden.

Wie testet man in Anbetracht dessen statische Methoden?

Es gibt vier einfache Schritte zum Einrichten eines Tests, der einen statischen Anruf verspottet:

  1. Verwenden Sie den PowerMock JUnit-Runner: @RunWith(PowerMockRunner.
  2. Deklarieren Sie die Testklasse, die wir verspotten:
  3. Teilen Sie PowerMock den Namen der Klasse mit, die statische Methoden enthält:
  4. Richten Sie die Erwartungen ein und weisen Sie PowerMock an, einen Aufruf einer statischen Methode zu erwarten:

Können wir in ähnlicher Weise statische C#-Methoden nachahmen? 4 Antworten. Moq (und andere DynamicProxy-basierte Verspottung Frameworks) sind nicht in der Lage spotten alles, was nicht virtuell oder abstrakt ist Methode . Alternative, Sie könnten Refaktorieren Sie Ihr Design in abstrakte Aufrufe an statische Methoden , und stellen Sie diese Abstraktion Ihrer Klasse per Dependency Injection zur Verfügung.

Wie führen Sie in diesem Zusammenhang einen Unit-Test privater Methoden durch?

Gerätetest nur die öffentlich verfügbare API. Beim Schreiben Komponententests , das Verhalten der SUT-Clients nachahmen. Nicht private Methoden testen . Entweder Gerätetest sie indirekt über die öffentliche API oder extrahieren sie in separate Klassen und Prüfung diese Klassen statt.

Was ist eine statische Methode?

In Java, a statische Methode ist ein Methode die zu einer Klasse gehört und nicht zu einer Instanz einer Klasse. Die Methode ist für jede Instanz einer Klasse zugänglich, aber Methoden in einer Instanz definiert sind, kann nur von diesem Mitglied einer Klasse zugegriffen werden.

Empfohlen: