manera de eliminar @DataJpaTest recomendada cuando se utiliza junto con @SpringBootTest

Asesino de la bestia:

Tenemos una aplicación que se basa en la primavera de arranque 2.0. Estamos en el proceso de migración a partir de JDK11 JDK8. Esto también nos permitió actualizar la primavera Arrancar desde 2.0 a 2.1. Después de leer a través de la lista de cambios, al parecer había algún cambio importante que necesitaba para nosotros.

Ahora las mentiras de problemas en donde algunas clases de prueba se anotan tanto con @SpringBootTesty @DataJpaTest. De acuerdo con esto , y así como la documentación, no se supone que debemos usar los dos juntos y en su lugar hemos cambiado @DataJpaTesta @AutoConfigureTestDatabase. Así es como el código es:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {A.class, B.class}, properties = {
    "x=xxx",
    "y=yyy"
})
@AutoConfigureTestDatabase  // Used to be @DataJpaTest
@EnableJpaRepositories("com.test")
@EntityScan("com.test")
public class Test {

    @TestConfiguration
    public static class TestConfig {
        // Some beans returning
    }
    // Tests
}

Ahora, nos encontramos con el siguiente error:

NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available

Así que de acuerdo con esta respuesta , hemos hecho algo como esto:

@EnableJpaRepositories(basePackages="com.test", entityManagerFactoryRef="entityManagerFactory")

Incluso después de esto, aún así terminar con el mismo error. ¿Es este el camino correcto para eliminar @DataJpaTest? ¿O tenemos necesidad de eliminar @SpringBootTesty hacer otra cosa? Cualquier tipo de orientación es muy apreciada.

Devilluminati:

El testclass se anota con @DataJpaTest y @ContextConfiguration

@RunWith(SpringRunner.class)
@DataJpaTest
@ContextConfiguration(locations = { "classpath:test-context.xml" })
public abstract class AbstractTestCase {

    protected static final Logger LOG = LoggerFactory.getLogger(AbstractTestCase.class);

}

Definimos una prueba de context.xml. Esto se debe a la TestModule está aislado de todos los demás módulos del proyecto (multi módulo de experto). En la prueba de context.xml definimos el componente de exploración para la base-paquete.

<context:component-scan base-package="de.example.base.package" />

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=214269&siteId=1
Recomendado
Clasificación