我将尝试一下:。
首先,我看不出你写测试的方式有什么不正确的地方。
根据测试用例描述,我假设测试用例用于
通讯簿
类,该类存储联系人列表,并且您正在测试该方法
添加联系人
暴露于
通讯簿
班
也就是说,你仍然可以通过在
添加联系人
方法:
public void addContact(Contact contact) throws IllegalArgumentException
{
if(contact == null)
{
//throw an exception after logging that contact is null
throw new IllegalArgumentException("Passed in contact cannot be null!!")
}
this.contactsList.add(contact);
}
现在您的测试代码
测试添加一个联系人
必须测试两个不同的输入案例,这可以使用两个单独的测试案例如下所述
@Test
public void testAddOneContact() {
final Contact contact = this.context.mock(Contact.class);
this.addressBook.addContact(contact);
assertTrue("Object added to list", this.addressBook.getNumberOfContacts() == 1);
//assuming that Contact class implements the equals() method you can test that the contact
//added is indeed the one that you passed in
assertTrue(addressBook.get(0).equals(contact));
}
//the below test ensures that there is exception handling mechanism within your library code
@Test
@Expected(IllegalArgumentException.class)
public void testShouldThrowWhenContactIsNull()
{
this.addressBook.addContact(null);
}
顺便说一句——注意实现一个好的测试类是如何让你思考将作为API公开的方法的设计,以及某些方法是如何
hashCode
和
equals()
需要重写。这也会让你思考——“我该如何处理错误案例?”。这些深思熟虑的问题对于确保您所发送的代码准确地解决本应以高效且无错误的方式解决的问题至关重要。
希望这能有所帮助