用 java语言以测试驱动开发实现队列
时间: 2024-03-29 12:12:01 浏览: 21
以下是用 Java 语言以测试驱动开发实现队列的示例代码:
```
import org.junit.Test;
import static org.junit.Assert.*;
public class QueueTest {
@Test
public void testEnqueue() {
Queue<Integer> queue = new Queue<>();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
assertEquals(3, queue.size());
}
@Test
public void testDequeue() {
Queue<Integer> queue = new Queue<>();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
int item = queue.dequeue();
assertEquals(1, item);
assertEquals(2, queue.size());
}
@Test
public void testIsEmpty() {
Queue<Integer> queue = new Queue<>();
assertTrue(queue.isEmpty());
queue.enqueue(1);
assertFalse(queue.isEmpty());
}
@Test
public void testSize() {
Queue<Integer> queue = new Queue<>();
assertEquals(0, queue.size());
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
assertEquals(3, queue.size());
}
}
class Queue<T> {
private Node<T> first;
private Node<T> last;
private int size;
private static class Node<T> {
private T item;
private Node<T> next;
}
public void enqueue(T item) {
Node<T> oldLast = last;
last = new Node<>();
last.item = item;
last.next = null;
if (isEmpty()) {
first = last;
} else {
oldLast.next = last;
}
size++;
}
public T dequeue() {
T item = first.item;
first = first.next;
size--;
if (isEmpty()) {
last = null;
}
return item;
}
public boolean isEmpty() {
return first == null;
}
public int size() {
return size;
}
}
```
上述代码中,我们通过四个测试方法来测试队列的四个基本操作,分别为入队、出队、判空和取队列大小。在 Queue 类中,我们使用一个内部类 Node 来表示队列中的每个节点,其中包含一个 item 和一个 next 指针。Queue 类中的四个方法均基于这个节点类实现,通过操作节点来完成队列的相应操作。在测试方法中,我们先创建一个空队列,然后依次执行相应的操作,并使用断言来验证操作的正确性。如果某个测试方法失败了,则说明队列的相应操作存在问题,需要进行修正。最终,当所有测试方法均通过时,我们就可以保证队列的基本操作是正确的。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)