介绍和Getting the Skeleton Files 想办法找到下面四个文件
这个proj要编写一个autoGrader,提供如下文件:
StudentArrayDeque.java
: A buggy implementation of ArrayDeque. 有错误的ArrayDequeArrayDequeSolution.java
: A correct implementation of ArrayDeque. 正确的ArrayDequeAssertEqualsStringDemo.java
: Demo of how to use assertEquals. 关于如何使用assertEquals的示范StudentArrayDequeLauncher.java
: Demo of how to use StudentArrayDeques. 如何使用StudentArrayDeques的示范
Randomized Testing 随机化的测试
课程的autoGrader在测试的时候,会随机选取学生版的某方法a和正解版的某方法a,一旦两者结果不一样,就报错,这个proj也要这么做,有下面两个要点:
- Randomized testing 测试要随机
- JUnit message generation. 要有报错信息
可以先运行StudentArrayDequeLauncher.java
,如果没问题发生,那么应该会输出一串数字(0-9之间的随机的啊就数字)。
任务1
下面新建一个文件TestArrayDequeGold.java
,增加如下引入语句:
import static org.junit.Assert.*;
import org.junit.Test;
在其中编写测试,随机测试StudentArrayDeque
和ArrayDequeSolution
的方法,如果两者结果不同,就报错。通过StdRandom
方法可以生成随机数,如果需要了解,这是文档地址:链接,StudentArrayDequeLauncher
可以作为参考,如果从StudentArrayDequeLauncher
直接复制程序,用@source
标注。
对本项目,可以使用Integer
作为Deque
的类型:
也就是StudentArrayDeque<Integer>
这样。
仅使用 addFirst、addLast、removeFirst 和 removeLast 方法就会找到错误,但使用其它方法也行。
测试不应导致 NullPointerException。确保永远不要尝试从空的 ArrayDeque 中remove一个元素,因为 Integer x = ad.removeFirst() 将导致 NullPointerException。此外,对于此项目,当您从双端队列检索值时,请始终使用 Integer 而不是 int,即不要执行 int x = ad.removeFirst()。要了解为什么会导致问题,请阅读课程页面中的“常见问题解答”:链接。