Indholdsfortegnelse:

Kan du enhedsteste statiske metoder?
Kan du enhedsteste statiske metoder?

Video: Kan du enhedsteste statiske metoder?

Video: Kan du enhedsteste statiske metoder?
Video: Oldest Creation Myths from East of Europe: When the Devil created the Earth 2024, November
Anonim

Til enhed teste dig skal tage et lille stykke af din kode, omkoble dens afhængigheder og prøve det isoleret. Det her er svært med statiske metoder , ikke kun i tilfælde af, at de får adgang til den globale stat, men endda hvis de kalder bare andre statiske metoder.

I betragtning af dette, hvordan tester du statiske metoder?

Der er fire nemme trin i opsætning af en test, der håner et statisk opkald:

  1. Brug PowerMock JUnit-løberen: @RunWith(PowerMockRunner.
  2. Erklær den testklasse, som vi håner:
  3. Fortæl PowerMock navnet på den klasse, der indeholder statiske metoder:
  4. Indstil forventningerne, og bed PowerMock om at forvente et opkald til en statisk metode:

På samme måde kan vi håne statiske metoder C#? 4 svar. Moq (og andre DynamicProxy-baserede hånende rammer) ikke er i stand til håne alt, der ikke er virtuelt eller abstrakt metode . Alternativt du kunne refaktorer dit design til abstrakte opkald til statiske metoder , og giv denne abstraktion til din klasse via afhængighedsinjektion.

I forhold til dette, hvordan enhedstester man private metoder?

Enhedstest kun den offentligt tilgængelige API. Når du skriver enhedstest , efterligne adfærden hos SUT's klienter. Lad være teste private metoder . Enten enhedstest dem indirekte ved at bruge den offentlige API, eller udtrække dem i separate klasser og prøve disse klasser i stedet for.

Hvad er en statisk metode?

I Java, en statisk metode er en metode der tilhører en klasse snarere end en forekomst af en klasse. Det metode er tilgængelig for alle forekomster af en klasse, men metoder defineret i en instans er kun i stand til at blive tilgået af det medlem af en klasse.

Anbefalede: