After you have finished this exercise, you understand how you can write assertions for streams by using Hamcrest. Let’s start by taking a look at the system under test.
The TagRepository
interface declares one method (findUniqueTagNames()
) which queries unique tag names from the database and returns a Stream
that contains the found tag names. If no tags is found from the database, this method returns an empty Stream
.
The source code of the TodoItemRepository
interface looks as follows:
import java.util.stream.Stream; interface TagRepository { Stream<String> findUniqueTagNames(); }
The TagService
class has one method called findUniqueTagNames()
which simply invokes the findUniqueTagNames()
method of the TagRepository
interface and returns the Stream
that’s returned by the invoked method.
The source code of the TagService
class looks as follows:
import java.util.stream.Stream; public class TagService { private final TagRepository repository; public TagService(TagRepository repository) { this.repository = repository; } public Stream<String> findUniqueTagNames() { return repository.findUniqueTagNames(); } }
During this exercise, you will write unit tests for the findUniqueTagNames()
method of the TagService
class. You can finish this exercise by following these steps:
1. Open the TagServiceTest
class that’s found from the com.cleantestautomation.junit5intro.tag
package.
2. Write the assertion which verifies that the system under test is working as expected when no tags is found from the database. You can find the relevant test method from this nested test class: FindUniqueTagNames -> WhenNoTagsIsFound
. Remember to use Hamcrest.
3. Write the assertions which ensure that the system under test is working as expected when two unique tags are found from the database. You can find the relevant test methods from this nested test class: FindUniqueTagNames -> WhenTwoUniqueTagsAreFound
. Remember to use Hamcrest.
4. Run the tests found from the TagServiceTest
class and make sure that they pass.