es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SpringJUnitConfig para múltiples clases JUnit.

En nuestro proyecto, cada clase Junit (que está anotada usando SpringJunitConfig) tiene una clase anotada con @Configuration que crea el Bean requerido para probar cualquier método específico de la clase de prueba.

Ejemplo:

“`
@SpringJunitConfig
class TestClass {

@Configuration
class TestConfig {

@Bean 
public TestClass testClass(DependantBean dependantBean) {
    return new TestClass(dependantBean);
} 

@Bean
public DependantBean dependantBean() {
   return new DependantBean();
}

}

@Autowire
private TestClass testClass;

@Test
void testMethod() {
//hacer la prueba
}
}

Sin embargo, esto parece útil para una sola clase de prueba, pero el problema es que cada clase de prueba tiene su propio archivo de configuración. Estamos tratando de evitar esto y queremos tener una sola clase de configuración para todas nuestras clases de prueba. ¿Puede alguien ayudarme a eliminar la anotación @Configuration repetitiva?

Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una posible solución para evitar repetir la anotación @Configuration en cada clase de prueba es crear una clase de configuración separada que contenga todas las definiciones de Bean necesarias para todas las clases de prueba. Esto se puede lograr extrayendo los métodos de definición de Bean de las clases individuales @Configuration y colocándolos en una única clase @Configuration, como esta:

    @SpringJunitConfig(classes = GlobalTestConfig.class)
    class TestClass {
    
      @Autowire private TestClass testClass; 
    
      @Test
      void testMethod() { 
        //hacer pruebas
      }
    }
    
    @Configuration
    class GlobalTestConfig {
    
      @Bean 
      public TestClass testClass(DependantBean dependantBean) {
          return new TestClass(dependantBean);
      }
    
      @Bean
      public DependantBean dependantBean() {
          return new DependantBean();
      }
    }
    

    En este ejemplo, la anotación @SpringJunitConfig especifica la clase GlobalTestConfig como fuente de configuración para todas las clases de prueba. Por lo tanto, no es necesario incluir una clase @Configuration separada para cada clase de prueba. En su lugar, todas las definiciones necesarias de Bean están definidas en la clase GlobalTestConfig, que es compartida por todas las clases de prueba.

    Al utilizar este enfoque, se puede eliminar la necesidad de repetir la misma anotación @Configuration en cada clase de prueba, manteniendo aún así las definiciones necesarias de Bean requeridas para las pruebas.

Comments are closed.