Cuprins:

Puteți testa metodele statice unitare?
Puteți testa metodele statice unitare?

Video: Puteți testa metodele statice unitare?

Video: Puteți testa metodele statice unitare?
Video: [QUESTION] Can we mock static methods in unit tests? 2024, Noiembrie
Anonim

La te testează unitar trebuie să luați o bucată mică de ta cod, recablați dependențele și Test ea izolat. E greu cu asta metode statice , nu numai în cazul în care accesează la stat global ci chiar dacă ei doar îi numesc pe alții metode statice.

Având în vedere acest lucru, cum testați metodele statice?

Există patru pași simpli în configurarea unui test care bate joc de un apel static:

  1. Utilizați runnerul PowerMock JUnit: @RunWith(PowerMockRunner.
  2. Declarați clasa de test de care o batem joc:
  3. Spuneți lui PowerMock numele clasei care conține metode statice:
  4. Configurați așteptările, spunându-i lui PowerMock să aștepte un apel la o metodă statică:

În mod similar, putem bate joc de metodele statice C#? 4 Răspunsuri. Moq (și altele bazate pe DynamicProxy batjocoritor cadre) nu pot a-și bate joc orice nu este virtual sau abstract metodă . Alternativ, ai putea refactorizează-ți designul la apeluri abstracte metode statice , și furnizați această abstractizare clasei dvs. prin injecția de dependență.

În acest sens, cum testați metodele private?

Test unitar numai API-ul disponibil public. Când scriu teste unitare , imită comportamentul clienților SUT. Nu testarea metodelor private . Fie test unitar indirect, folosind API-ul public sau extrageți-le în clase separate și Test acele clase în schimb.

Ce este o metodă statică?

În Java, a metoda statica este o metodă care aparține unei clase mai degrabă decât unei instanțe a unei clase. The metodă este accesibil fiecărei instanțe a unei clase, dar metode definite într-o instanță pot fi accesate numai de acel membru al unei clase.

Recomandat: