Tabla de contenido:

¿Puede realizar pruebas unitarias con métodos estáticos?
¿Puede realizar pruebas unitarias con métodos estáticos?

Video: ¿Puede realizar pruebas unitarias con métodos estáticos?

Video: ¿Puede realizar pruebas unitarias con métodos estáticos?
Video: MOCKITO y PRUEBAS UNITARIAS en JAVA (JUNIT 5) - Tutorial Fácil 2024, Noviembre
Anonim

Para prueba de unidad Necesito tomar un pequeño trozo de tu código, vuelva a cablear sus dependencias y prueba de forma aislada. Esto es dificil con métodos estáticos , no solo en el caso de que accedan al estado global sino incluso si ellos solo llaman a otros métodos estáticos.

Teniendo esto en cuenta, ¿cómo se prueban los métodos estáticos?

Hay cuatro sencillos pasos para configurar una prueba que simule una llamada estática:

  1. Utilice el corredor de PowerMock JUnit: @RunWith (PowerMockRunner.
  2. Declara la clase de prueba de la que nos burlamos:
  3. Dígale a PowerMock el nombre de la clase que contiene métodos estáticos:
  4. Configure las expectativas, indicando a PowerMock que espere una llamada a un método estático:

Del mismo modo, ¿podemos burlarnos de los métodos estáticos C #? 4 respuestas. Moq (y otros basados en DynamicProxy burlón frameworks) no pueden burlarse de cualquier cosa que no sea virtual o abstracta método . Alternativamente, tú podrías refactorice su diseño para abstraer llamadas a métodos estáticos y proporcione esta abstracción a su clase a través de la inyección de dependencia.

Con respecto a esto, ¿cómo se realizan las pruebas unitarias de los métodos privados?

Prueba de unidad solo la API disponible públicamente. Cuando se escribe pruebas unitarias , imitar el comportamiento de los clientes del IVU. No probar métodos privados . Cualquiera prueba de unidad indirectamente, utilizando la API pública, o extraerlos en clases separadas y prueba esas clases en su lugar.

¿Qué es un método estático?

En Java, un método estático es un método que pertenece a una clase en lugar de una instancia de una clase. los método es accesible para todas las instancias de una clase, pero métodos definidas en una instancia solo pueden ser accedidas por ese miembro de una clase.

Recomendado: