CS61B srping 2018 proj1Gold-Autograding https://sp18.datastructur.es/ 我放弃了。

介绍和Getting the Skeleton Files 想办法找到下面四个文件

这个proj要编写一个autoGrader,提供如下文件:

  • StudentArrayDeque.java: A buggy implementation of ArrayDeque. 有错误的ArrayDeque
  • ArrayDequeSolution.java: A correct implementation of ArrayDeque. 正确的ArrayDeque
  • AssertEqualsStringDemo.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()。要了解为什么会导致问题,请阅读课程页面中的“常见问题解答”:链接

任务2 我放弃了
posted @ 2025-01-15 11:20  刘老六  阅读(33)  评论(0)    收藏  举报