After you have finished this exercise, you understand how you can write assertions for the properties of an object that’s returned by the system under test and you know how you can ensure that the system under throws the correct exception. Let’s start by taking a look at the system under test.
The TodoItemRepository
interface declares one method (findById()
) that returns an Optional
object that contains the found todo item. If no todo item is found from the database, this method returns an empty Optional
object.
The source code of the TodoItemRepository
interface looks as follows:
import java.util.Optional; interface TodoItemRepository { Optional<TodoItem> findById(Long id); }
The TodoItem
class contains the information of one todo item. Its source code looks as follows:
public class TodoItem { private Long id; private String title; private String description; //Getters and setters are omitted }
The TodoItemService
class has one method called findById()
which queries the information of the specified todo item from the database. This method is implemented by following these steps:
- Find the requested todo item from the database.
- Return the found todo item. If no todo item is found from the database, throw a
TodoItemNotFoundException
.
The source code of the TodoItemService
class looks as follows:
public class TodoItemService { private final TodoItemRepository repository; public TodoItemService(TodoItemRepository repository) { this.repository = repository; } public TodoItem findById(Long id) { return repository.findById(id) .orElseThrow( () -> new TodoItemNotFoundException( "No todo item found with id: #" + id ) ); } }
During this exercise you will write unit tests for the findById()
method of the TodoItemService
class. You can finish this exercise by following these steps:
1. Open the TodoItemServiceTest
class that’s found from the com.cleantestautomation.junit5intro.todoitem
package.
2. Write the assertions which verify that the system under test is working as expected when the requested todo item isn’t found. You can find the relevant test methods from a nested test class called: WhenTodoItemIsNotFound
. Use the JUnit 5 assertion API.
3. Write the assertions which verify that the system under test is working as expected when the requested todo item is found. You can find the relevant test methods from a nested test test class called: WhenTodoItemIsFound
. Use the JUnit 5 assertion API.
4. Run the tests found from the TodoItemServiceTest
class and make sure that they pass.