如何测试我的java程序?

时间:2015-04-14 23:47:09

标签: java email testing arraylist

我被要求编写程序的这一部分,然后按以下方式进行测试:

在main方法中添加一些语句,创建两个或三个联系人实例,将它们添加到通讯簿中,然后搜索其中的一个或两个。显示每个搜索的结果以查看它们是否被正确检索。然后删除其中一个并显示列表以确保它已被正确删除。

我不完全确定如何测试这个。我应该在主班写什么?此外,其余代码是否正确?

为Contact Class执行此操作:

在客户端软件包中创建此类。这个类应该有三个字段(一个电子邮件地址,一个全名,一个昵称)。所有这些都应该是字符串。

提供两个构造函数:一个完整​​构造函数(所有三个成员变量的参数),以及一个仅具有电子邮件地址参数的构造函数。第二个构造函数将其他两个字段保留为空。

添加一个toString方法(并使用@Override注释),其工作原理如下:

Contact c1 = new Contact("jenny@gmail.com");
c2.toString() should return "jenny@gmail.com".

Contact c2 = new Contact("jenny@gmail.com", "Jennifer Abott", "jenny");
c2.toString() should return "Jennifer Abott (jenny) jenny@gmail.com".

为AddressBook类执行此操作:

  1. 创建此类并具有类型为ArrayList<Contact>的单个成员变量。定义变量,不要只是声明它 你不需要构造函数。
  2. 编写具有Contact参数的add方法,并将联系人添加到联系人列表中。
  3. 编写一个具有String参数的remove方法,该参数是要删除的联系人的昵称。它什么都不返回。从联系人列表中删除该联系人。提示:使用您已编写的搜索方法查找联系人,然后从联系人列表中删除该联系人。有关removeList方法在ArrayList类中的工作方式,请参阅ArrayList的联机文档。如果你给它一个列表中不存在的昵称,请确保remove方法不会崩溃。
  4. 编写一个具有String参数的搜索方法,该参数是要搜索的昵称。该方法必须遍历联系人列表。如果找到昵称(使用.equals),则返回该联系人。如果未找到联系人,请返回null。
  5. 编写一个显示每个Contact实例的show方法。它没有参数,也没有返回任何内容。每行显示一个联系人,并为每行编号。像这样:

    1. Jeff Meunier(杰夫)
    2. 比尔盖茨(钱)
    3. Vladimir Putin(vman)
    4. 确保显示的数字从1开始,而不是从0开始。

      联系班级:

      package client;
      
      public class Contact 
      {
        private String _emailAddress;
        private String _fullName;
        private String _nickName;
      
        public Contact(String emailAddress, String fullName, String nickName)
        {
          _emailAddress = emailAddress;
          _fullName = fullName;
          _nickName = nickName;
        }
      
        public Contact(String emailAddress)
        {
          _emailAddress = emailAddress; 
        }
      
        @Override
        public String toString()
        {
          if(_fullName == null)
          {
              return "<" + _emailAddress + ">";
          }
          else
          {
          return _fullName + " " + "(" + _nickName + ")" + " " + "<" + _emailAddress + ">";
          }
        }
      }
      

      地址簿类:

      package client;
      import java.util.ArrayList;
      
      public class AddressBook 
      {
        public ArrayList<Contact> contactList = new ArrayList<Contact>();
      
        public void add(Contact _contact)
        {
          contactList.add(_contact);
        }
      
        public Contact search(String nickName)
        {
          for (int n=0; n < contactList.size(); n++)
          {
              if(contactList.get(n).equals(nickName))
              {
                  return contactList.get(n);
              }
          }
          return null;
        }
      
        public void remove(String nickName)
        {
          if(search(nickName) != null)
          {
              contactList.remove(search(nickName));
          }
        }
      
        public void show()
        {
          for(int n=0; n<contactList.size(); n++)
          {
              System.out.println(n++ + ". " + contactList.get(n).toString());
          }
        }
      }
      

      我在主课程中没有太多东西,但现在是:

      主要类

      import java.util.ArrayList;
      import client.Contact;
      
      
      public class Main
      {
        public static void main(String[] args)
        {
          Contact c1 = new Contact("jeffm@engr.uconn.edu");
      
          Contact c2 = new Contact("jeffm@engr.uconn.edu", "Jeff Meunier", "jeff");
        }
      }
      

1 个答案:

答案 0 :(得分:0)

“向创建两个或三个联系人实例的main方法添加一些语句,将它们添加到通讯簿中,然后搜索其中的一个或两个。显示每个搜索的结果以查看它们是否被正确检索。然后删除其中一个并显示列表以确保它已被正确删除。“

如果这是你的任务,那么:
1.您创建了一些联系实例,因此已完成,但在设置了所有可用的类字段后再创建一些(后续步骤将需要这样做)
2.现在您必须创建地址簿类的实例。

AddressBook addressBook = new AddressBook();
  1. 将创建的联系人添加到地址簿

    addressBook.add(c1);
    addressBook.add(c2);
    // other contacts

  2. 使用show方法查看一切是否正确。

    addressBook.show();

  3. 尝试删除一个并再次显示可用的联系人,看看是否有效。

    addressBook.remove(c1.getNickName()); // Make get method for the nickname
    addressBook.show();

  4. 然后搜索具有特定名称的联系人,将其分配给新的联系人对象,然后从中打印一些内容以确认该对象是正确的。
    在这里,您的逻辑可能会中断,因为您的搜索不会涵盖您拥有多个具有相同名称的联系人的可能性。因此,您应该返回找到的联系人列表而不是一个联系人。实现它并再次搜索(确保搜索具有唯一和非唯一名称的对象,以便可以接受测试)。

  5. 您的搜索测试最终会看起来像这样:

    List <Contact> contacts = addressBook.search("John");
    for(Contact contact in contacts) {
         System.out.println(contact.toString());
    }
    

    现在,由于您的删除方法取决于搜索,因此您必须稍微更改一下。执行此操作时,请再次测试remove方法。

    完成每一步,直到它完好无损并完成。

    P.S。您可能希望在不同的测试打印之间打印一些描述,因此您可以在输出中清楚地看到结果