Innholdsfortegnelse:

Kan du enhetsteste statiske metoder?
Kan du enhetsteste statiske metoder?

Video: Kan du enhetsteste statiske metoder?

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

Til enhetsteste deg må ta en liten bit av din kode, koble om avhengighetene og test det isolert. Dette er vanskelig med statiske metoder , ikke bare i tilfelle de får tilgang til global stat, men til og med hvis de bare ringer andre statiske metoder.

Med tanke på dette, hvordan tester du statiske metoder?

Det er fire enkle trinn i å sette opp en test som håner et statisk anrop:

  1. Bruk PowerMock JUnit-løperen: @RunWith(PowerMockRunner.
  2. Erklær testklassen som vi håner:
  3. Fortell PowerMock navnet på klassen som inneholder statiske metoder:
  4. Sett opp forventningene, og be PowerMock forvente et kall til en statisk metode:

På samme måte kan vi håne statiske metoder C#? 4 svar. Moq (og andre DynamicProxy-baserte gjøre narr av rammer) ikke er i stand til det håne alt som ikke er virtuelt eller abstrakt metode . Alternativt du kan refaktoriser designet ditt til abstrakte kall til statiske metoder , og gi denne abstraksjonen til klassen din via avhengighetsinjeksjon.

I forhold til dette, hvordan enhetstester du private metoder?

Enhetstest bare det offentlig tilgjengelige API. Når du skriver enhetstester , etterligne oppførselen til SUTs klienter. Ikke gjør det teste private metoder . Enten enhetstest dem indirekte, ved å bruke det offentlige API-et, eller trekke dem ut i separate klasser og test disse klassene i stedet.

Hva er en statisk metode?

I Java, en statisk metode er en metode som tilhører en klasse i stedet for en forekomst av en klasse. De metode er tilgjengelig for alle forekomster av en klasse, men metoder definert i en forekomst kan bare nås av det medlemmet av en klasse.

Anbefalt: