如何实现一个测试程序(Java)来测试CSC20011LinkedList方法?

如何实现一个测试程序(Java)来测试CSC20011LinkedList方法?,java,testing,methods,linked-list,nodes,Java,Testing,Methods,Linked List,Nodes,我想知道如何实现一个测试程序来彻底测试这些方法,并通过在测试程序中使用两个CSC20011LinkedList对象来做到这一点,一个对象作为有序列表维护,另一个作为无序列表维护。我知道其中的一个方面是使用print方法来检查这些方法是否正常工作 类Csc2001LinkedList public class Csc2001LinkedList { protected Node head; public Csc2001LinkedList(Node head) {

我想知道如何实现一个测试程序来彻底测试这些方法,并通过在测试程序中使用两个CSC20011LinkedList对象来做到这一点,一个对象作为有序列表维护,另一个作为无序列表维护。我知道其中的一个方面是使用print方法来检查这些方法是否正常工作

Csc2001LinkedList

public class Csc2001LinkedList {

    protected Node head;

    public Csc2001LinkedList(Node head)
    {
        this.head = null;
    }

    public Node getHead()
    {
        return head;
    }

    public void addFirst(char c)
    {
        head = new Node(c, head);
    }

    public void addAtEnd(char c)
    {
        Node n = new Node(c, head);
        Node temp = head;

        while(temp.next != null)
        {
            temp = temp.next;
        }
        temp.next = n;
    }

    public void addInOrder(char c)
    {
        Node n = new Node(c, head);

        if(isEmpty())
        {
            addFirst(c);
        }
        else
        {
            Node pre = head;
            Node succ = head.next;

            if(n.ch < pre.ch)
            {
                n.next = head;
                head = n;
            }
            else
            {
                while(succ != null && n.ch > succ.ch)
                {
                    pre = succ;
                    succ = pre.next;
                }
                n.next = succ;
                pre.next = n;
            }
        }
    }

    public boolean isEmpty()
    {
        return (head == null);
    }

    public char removeFirst()
    {
        Node temp = head.next;

        if(temp != null)
        {
            head.next = temp.next;
            return temp.ch;
        }
        else
        {
            System.out.println("List is empty");
            return '?';
        }
    }

    public void printList()
    {
        Node temp = head;

        while(temp != null)
        {
            System.out.println(temp.ch + " ");
            temp = temp.next;
        }
    }
}

我的建议是在你的课程中增加第三门课。该类将是一个驱动程序类,用于彻底测试列表和节点方法。您可以通过以下两种方式之一执行此操作:

  • 在驱动程序类的main方法中创建一个非常基本的接口。此方法将允许您通过键盘输入向列表中添加字符,并将自动打印列表,以及完成添加后要执行的任何其他操作。这是一个很好的选择,因为您不必处理文件输入。但是,如果不在UI中投入大量工作,测试诸如delete之类的方法确实很困难
  • 创建从文件中读入值的方法。创建用于测试方法的字符文件。在驱动程序类的main方法中,读入文件,将其添加到您创建的列表中(按顺序或在末尾),然后打印列表。然后,您可以在列表上测试其他方法,您可以提前控制列表的大小和特性
public class Node {

    protected char ch;
    protected Node next;

    public Node(char ch, Node next)
    {
        this.ch = ch;
        this.next = null;
    }

}