Inhoudsopgave:

Kun je statische methoden unit testen?
Kun je statische methoden unit testen?

Video: Kun je statische methoden unit testen?

Video: Kun je statische methoden unit testen?
Video: Как писать аспекты с помощью Spring AOP [Путь к Spring AOP — Часть 1] 2024, December
Anonim

Tot unit test je moet een klein stukje nemen jouw code, de afhankelijkheden opnieuw bedraden en toets het in isolatie. Dit is moeilijk met statische methoden , niet alleen in het geval dat ze toegang hebben tot de wereldstaat, maar zelfs indien ze bellen gewoon een ander statische methoden.

Als u dit in overweging neemt, hoe test u statische methoden?

Er zijn vier eenvoudige stappen bij het opzetten van een test die een statische oproep bespot:

  1. Gebruik de PowerMock JUnit-runner: @RunWith(PowerMockRunner.
  2. Verklaar de testklasse die we bespotten:
  3. Vertel PowerMock de naam van de klasse die statische methoden bevat:
  4. Stel de verwachtingen in en vertel PowerMock om een aanroep van een statische methode te verwachten:

Kunnen we ook de spot drijven met statische methoden C#? 4 antwoorden. Moq (en andere op DynamicProxy gebaseerde) bespotten kaders) niet in staat zijn om bespotten alles wat niet virtueel of abstract is methode . Alternatief, je zou kunnen refactor uw ontwerp naar abstracte oproepen naar statische methoden , en geef deze abstractie aan uw klas via afhankelijkheidsinjectie.

Hoe test u in dit verband privémethoden?

Hoofdstuk toets alleen de openbaar beschikbare API. bij het schrijven eenheidstests , bootsen het gedrag van de klanten van de SUT na. niet doen test privé-methoden . Of hoofdstuk toets ze indirect, met behulp van de openbare API, of extraheer ze in afzonderlijke klassen en toets die klassen in plaats daarvan.

Wat is een statische methode?

Op Java is een statische methode: is een methode die tot een klasse behoort in plaats van een instantie van een klasse. De methode is toegankelijk voor elke instantie van een klasse, maar methoden gedefinieerd in een instantie zijn alleen toegankelijk voor dat lid van een klasse.

Aanbevolen: