Page 1 of 1

Grundlegender Fehler beim Port der Spring Boot-Anwendungstestvariable

Posted: 08 Jan 2025, 10:08
by Guest
Ich habe ein Problem mit meinem Spring Boot-Anwendungstest. Der Test schlägt mit der Fehlermeldung fehl: „Symbol nicht gefunden, Symbol: Variabler Port.“ Ich habe den Port bereits mit WebEnvironment.RANDOM_PORT definiert, aber es scheint, als ob etwas fehlt oder nicht richtig konfiguriert ist. Kann jemand vorschlagen, was dieses Problem verursachen könnte?

Code: Select all

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.ANY)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class PersonEntityApplicationTest {

@Autowired
private TestRestTemplate restTemplate;

@Autowired
private PersonEntityRepository personRepository;

@Test
@Order(1)
public void testGetPersonEntityById() {
PersonEntity person = PersonEntity.builder()
.firstname("John")
.lastname("Doe")
.age(29)
.build();

person = personRepository.save(person);

ResponseEntity response = restTemplate.getForEntity(
"http://localhost:"  + port + "/persons/" + person.getId(), PersonEntity.class);
assertEquals(HttpStatus.OK, response.getStatusCode());
assertNotNull(response.getBody());
assertEquals("John", response.getBody().getFirstname());
assertEquals("Doe", response.getBody().getLastname());
assertEquals(29, response.getBody().getAge());
}
...
Das gleiche Problem führte auch dazu, dass meine andere Methode nicht funktionierte:

Code: Select all

    @Test
@Order(2)
public void testUpdatePersonEntity() {
PersonEntity person = PersonEntity.builder()
.firstname("Joe")
.lastname("Doe")
.age(29)
.build();

personRepository.save(person);

PersonEntity updatedPersonEntity = PersonEntity.builder()
.firstname("John")
.lastname("Doe")
.age(29)
.build();

String url = "http://localhost:" + port + "/persons/update/1";
ResponseEntity response = restTemplate.exchange(url,
HttpMethod.PUT,
new HttpEntity(updatedPersonEntity),
PersonEntity.class
);

assertEquals(HttpStatus.OK, response.getStatusCode());
PersonEntity responseBody = response.getBody();
assertThat(responseBody).isNotNull();
assertThat(responseBody.getLastname())
.isEqualTo(updatedPersonEntity.getLastname());
}
Ich habe versucht, die Portabhängigkeit vollständig zu beseitigen, um sicherzustellen, dass es ohne Port funktioniert, aber es stellte sich heraus, dass der Port tatsächlich notwendig ist.