Valor de anotación que no trabajan en la prueba Junit

Georgi Michev:
@SpringBootTest
public class RuleControllerTest {

@Value("${myUrl}")
private String myUrl;
private HttpClient httpClient = HttpClients.createDefault();

@Test
public void loadAllRules() throws IOException, URISyntaxException {
    String target = myUrl + "/v2/rules";
    String json = generateHTTPget(target);

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    Rule[] rules = objectMapper.readValue(json, Rule[].class);

    boolean correctResponse = rules != null ? true : false;
    int httpCode = getHTTPcode(target);
    boolean correctStatus = httpCode >= 200 && httpCode <= 300 ? true : false;

    assertTrue(correctStatus);
    assertTrue(correctResponse);
}

Estoy tratando de obtener una cadena de mi archivo application.properties y el inserto @Valor en un campo en mi prueba Junit. He hecho esto antes en la clase normal, pero tengo nulo en mi campo en la prueba. He leído las preguntas similares acerca de este problema y hasta ahora tratado de crear el paquete de prueba src / / recursos y clonar las application.properties allí. También probamos para agregar la dependencia

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
</dependency>

y añadir la anotación

@RunWith(SpringRunner.class)

Consigo un mensaje No se encontraron pruebas con el corredor de prueba Junit 5 y en la pestaña problemas que he springboottest.jar no se puede leer o no es un archivo ZIP válido

también probamos

@PropertySource("classpath:application.properties")

como la anotación de la clase pero con mismo resultado

Yo probé, así que:

@RunWith(SpringJUnit4ClassRunner.class)

Si i codificar el myURL cadena en " http: // localhost: 8090 " funciona la prueba por lo que el problema está en el @Valor no funciona

RITESH:

Después de que funciona para mí. Se recoge valor del archivo application.properties.

@RunWith(SpringRunner.class)
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)
public class ValueAnnotationTest {

    @Value("${myUrl}")
    private String myUrl;

    @Test
    public void test1() throws Exception {
    assertThat(myUrl).isEqualTo("http://test.com");
    }
}

De docs primavera de arranque :

Usando ConfigFileApplicationContextInitializersolo no proporciona soporte para @Value("${…​}")la inyección. Su único trabajo es asegurarse de que application.propertieslos archivos se cargan en el Medio Ambiente de la primavera. Para @Valueel apoyo, es necesario configurar ya sea adicionalmente una PropertySourcesPlaceholderConfigurero uso @SpringBootTest, que se auto-configura una para ti.

Supongo que te gusta

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