@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
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
ConfigFileApplicationContextInitializer
solo no proporciona soporte para@Value("${…}")
la inyección. Su único trabajo es asegurarse de queapplication.properties
los archivos se cargan en el Medio Ambiente de la primavera. Para@Value
el apoyo, es necesario configurar ya sea adicionalmente unaPropertySourcesPlaceholderConfigurer
o uso@SpringBootTest
, que se auto-configura una para ti.