Innehållsförteckning:

Kan du enhetstesta statiska metoder?
Kan du enhetstesta statiska metoder?

Video: Kan du enhetstesta statiska metoder?

Video: Kan du enhetstesta statiska metoder?
Video: Gregory Chaitin: Complexity, Metabiology, Gödel, Cold Fusion 2024, November
Anonim

Till enhet testa dig måste ta en liten bit av din kod, koppla om dess beroenden och testa det isolerat. Det här är svårt med statiska metoder , inte bara om de har tillgång till globala tillstånd utan till och med om de ringer bara andra statiska metoder.

Med tanke på detta, hur testar man statiska metoder?

Det finns fyra enkla steg för att ställa in ett test som hånar ett statiskt samtal:

  1. Använd PowerMock JUnit runner: @RunWith(PowerMockRunner.
  2. Deklarera testklassen som vi hånar:
  3. Berätta för PowerMock namnet på klassen som innehåller statiska metoder:
  4. Ställ in förväntningarna och berätta för PowerMock att förvänta sig ett anrop till en statisk metod:

På samma sätt kan vi håna statiska metoder C#? 4 svar. Moq (och andra DynamicProxy-baserade hånfull ramar) inte kan falsk allt som inte är virtuellt eller abstrakt metod . Alternativt du kunde refaktorisera din design till abstrakta samtal till statiska metoder , och ge denna abstraktion till din klass via beroendeinjektion.

Med hänsyn till detta, hur enhetstestar man privata metoder?

Enhetstest endast det offentligt tillgängliga API:et. När man skriver enhetstester , härma beteendet hos SUT:s klienter. Gör det inte testa privata metoder . Antingen enhetstest dem indirekt, med hjälp av det offentliga API:t, eller extrahera dem i separata klasser och testa dessa klasser istället.

Vad är en statisk metod?

I Java, a statisk metod är en metod som tillhör en klass snarare än en instans av en klass. De metod är tillgänglig för alla instanser av en klass, men metoder definierade i en instans kan endast nås av den medlemmen i en klass.

Rekommenderad: