Ich habe eine Spring - Funktion:
und eine zugehörige JUnit5 Test-Funktion
Ich sehe das die zu testende Funktion wirklich eine ResourceNotFoundException wirft, wenn ein nicht existende User ID übergeben wurde. Oder anders gesagt der Abschnitt
arbeitet sauber, aber in der Test-Funktion an der Stelle
scheint es fast so als würde catch nicht anspringen.
Denn
wird mit true quitiert und nicht wie eigentlich gedacht als false.
Java:
public FieldDescription createFieldDescription(User creator, FieldDescription fieldDescription) throws ResourceNotFoundException {
if (creator == null)
throw new IllegalArgumentException("The creator must not be zero");
if (fieldDescription == null)
throw new IllegalArgumentException("The adding field description must not be zero");
userRepository.findById(creator.getId())
.orElseThrow(() -> new ResourceNotFoundException("Creator not found with the id :: " + creator.getId()));
fieldDescription.setId(sequenceGeneratorService.generateSequence(FieldDescription.SEQUENCE_NAME));
fieldDescription.setCreatedBy(creator);
fieldDescription.setCreatedAt(LocalDateTime.now());
return fieldDescriptionRepository.save(fieldDescription);
}
und eine zugehörige JUnit5 Test-Funktion
Code:
@Test
void testCreateWiFieldDescriptionthWithNotExistsUserShouldThrowResourceNotFoundException() throws ResourceNotFoundException {
// create a basic user
String firstname = "firstname";
String lastname = "lastname";
String email = "email@email.com";
String password = "password";
User user = new User(
firstname, // password
lastname, // lastname
email, // email
password // password
);
boolean exception = false;
try {
userService.createUser(null, user);
} catch (ResourceNotFoundException e) {
exception = true;
e.printStackTrace();
}
assertFalse(exception, "testCreateWiFieldDescriptionthWithNotExistsUserShouldThrowResourceNotFoundException(): Couldnt create user");
assertNotNull(user);
// create basic field description
user.setId(999999); // set user to an illagel index
String name = "aFieldname";
EFieldType fieldType = EFieldType.TEXT;
String options = "options";
FieldDescription fieldDescription = new FieldDescription(name, fieldType, options);
exception = false;
try {
fieldService.createFieldDescription(user, fieldDescription);
} catch (ResourceNotFoundException e) {
exception = true;
e.printStackTrace();
}
assertTrue(exception, "testCreateWiFieldDescriptionthWithNotExistsUserShouldThrowResourceNotFoundException(): FieldDescription could be create");
// clean up
userService.removeUser(user.getId());
}
Ich sehe das die zu testende Funktion wirklich eine ResourceNotFoundException wirft, wenn ein nicht existende User ID übergeben wurde. Oder anders gesagt der Abschnitt
Code:
userRepository.findById(creator.getId())
.orElseThrow(() -> new ResourceNotFoundException("Creator not found with the id :: " + creator.getId()));
arbeitet sauber, aber in der Test-Funktion an der Stelle
Code:
try {
fieldService.createFieldDescription(user, fieldDescription);
} catch (ResourceNotFoundException e) {
exception = true;
e.printStackTrace();
}
scheint es fast so als würde catch nicht anspringen.
Denn
Code:
assertTrue(exception, "testCreateFieldDescriptionthWithNotExistsUserShouldThrowResourceNotFoundException(): FieldDescription could be create");