Taula de continguts:

Podeu provar mètodes estàtics per unitat?
Podeu provar mètodes estàtics per unitat?

Vídeo: Podeu provar mètodes estàtics per unitat?

Vídeo: Podeu provar mètodes estàtics per unitat?
Vídeo: ТАКОВ МОЙ ПУТЬ В L4D2 2024, Maig
Anonim

A et prova la unitat cal agafar un tros petit teu codi, reconnectar les seves dependències i prova això de manera aïllada. Això és difícil amb mètodes estàtics , no només en el cas que accedeixin a l'estat global sinó fins i tot si només en diuen altres mètodes estàtics.

Tenint en compte això, com proveu els mètodes estàtics?

Hi ha quatre passos senzills per configurar una prova que es burla d'una trucada estàtica:

  1. Utilitzeu el corredor PowerMock JUnit: @RunWith(PowerMockRunner.
  2. Declara la classe de prova de la qual ens burlem:
  3. Digues a PowerMock el nom de la classe que conté mètodes estàtics:
  4. Configureu les expectatives i digueu a PowerMock que espereu una trucada a un mètode estàtic:

De la mateixa manera, podem burlar-nos dels mètodes estàtics C#? 4 respostes. Moq (i altres basats en DynamicProxy burlant marcs) no poden burla qualsevol cosa que no sigui virtual o abstracte mètode . Alternativament, podries refactoritza el teu disseny a les trucades abstractes mètodes estàtics , i proporcioneu aquesta abstracció a la vostra classe mitjançant la injecció de dependències.

Respecte a això, com feu proves unitàries dels mètodes privats?

Prova unitària només l'API disponible públicament. En escriure proves unitàries , imiten el comportament dels clients del SUT. No ho facis prova mètodes privats . Tampoc prova unitària indirectament, utilitzant l'API pública, o extreu-los en classes separades i prova en canvi aquestes classes.

Què és un mètode estàtic?

A Java, a mètode estàtic és un mètode que pertany a una classe en lloc d'una instància d'una classe. El mètode és accessible a cada instància d'una classe, però mètodes definides en una instància només poden accedir-hi aquest membre d'una classe.

Recomanat: