In this homework, we will develop a small software that checks if the feeds that we subscribed have any updates.
Our main object, a FeedChecker
, uses two other objects: a FeedReader
and a FeedDatabase
.
FeedReader
provides the following methods:fetch()
reads the content of the feed.getEntries()
returns the list of entries in the feed.getTitles()
returns the list of titles of all entries.FeedDatabase
provides the following methods:getTitles()
returns the list of titles of all entries.The following interfaces describe both classes.
import java.util.List; public interface FeedReader { List<String> getTitles(); void fetch(); }
import java.util.List; public interface FeedDatabase { List<String> getTitles(); }
Following is the skeleton of the Class Under Test, FeedChecker
.
import java.util.List; public class FeedChecker { public FeedChecker(FeedReader reader, FeedDatabase db) {} public void check() {} public List<String> getNewTitles() {} }
When method check()
is called, a FeedChecker
would invoke fetch
from the FeedReader
, then compares the list of titles returned from FeedReader
and the titles returned from FeedDatabase
. Method getNewTitle()
returns a list of new titles, i.e., those titles returned by FeedReader
which are not returned by FeedDatabase
.
Your task is to develop a unit test FeedCheckerTest
for FeedChecker
. You should include at least 3 interesting test cases (Recall the slides on 'what to test'?). Also, you have to implement FeedChecker
so that it passes all test cases.
Don't implement FeedReader
or FeedDatabase
. You should mock them instead.