如何在java中测试这个void方法?
这是我正在测试的类:
public class MovieListing implements Listing {
private BitSet keyVectors = new BitSet();
private int year;
private String title;
private Set<String> keywords;
public MovieListing(String title, int year) throws ListingException {
if (title == null || title.isEmpty() || year <= 0) {
throw new ListingException("Missing Title or year <= 0");
}
this.title = title;
this.year = year;
keywords = new TreeSet<String>();
}
public void addKeyword(String kw) throws ListingException {
if (kw == null || kw.isEmpty()) {
throw new ListingException("Missing keywords");
}
this.keywords.add(kw);
}
这是addKeyword方法的测试:
@Before
public void setup() throws Exception {
movieList = new MovieListing(null, 0);
}
@Test
public void addKeywords() throws Exception {
assertEquals(0, movieList.getKeywords().size());
movieList.addKeyword("test1");
assertEquals(1, movieList.getKeywords().size());
movieList.addKeyword("test2");
assertEquals(2, movieList.getKeywords().size());
}
哪里出了问题?它不能通过。谢谢你的建议
我如何在类中测试异常,因为如果我使用^{
# 1 楼答案
您正在用
null
初始化title
,如下所示:然后,如果构造函数是
null
,则向其抛出一个异常:# 2 楼答案
尽管事实上,如果传入
null
,或者year
为0,您将调用错误条件(由于这个奇妙的条件,可能完全有效):。。。您在某些方面或容量上缺少了
keywords
集的曝光由于您的方法是
void
,因此无法断言您将从该方法得到什么。因此,您必须检查正在处理的实体的内部状态这可以通过
keywords
字段上的包私有getter轻松实现:此时,请确保测试类与实际代码位于同一个包中
此外,我建议不要在
init
中设置这种初始数据。我认为每个单独的测试都是一个空白的板岩,需要初始化我们想要测试的实体。这将是一个简单的问题,将实例化移动到测试本身中