当前位置: 首页 > 知识库问答 >
问题:

如何使用JUnit对链表进行单元测试

濮翰学
2023-03-14

我是TDD的忠实粉丝,我通常在编写代码之前为我的大学作业编写测试用例。下面是我作业的界面:

public interface SinglyLinkedList<E> {
    public void insertFirst(E e);
    public void insertAfter(E e, int index);
    public void removeFirst();
    public void remove(int index);
    public void removeAll();
    public E getFirst();
    public E get(int index);
    public int size();
    public String toString();
}

共有1个答案

苏承载
2023-03-14

单元测试中的单元不必是单独的方法。从合同的角度来思考更有用。约定可以是给定特定的参数,函数应该返回特定的值,但通常它们更复杂。

例如,可以有一个约定,在调用insertfirst之后:

  • GetFirst返回插入的对象
  • size返回旧大小加一
  • ToString的输出包括插入的对象

这些被称为合同的后置条件。合同也可能有先决条件:例如,如果列表为空,那么remove应该抛出异常。

当契约需要与外部实体交互时,模拟对象就变得有用了。这里不是这样。

 类似资料:
  • 问题内容: 我一直在学习AngularJS,并且在单元测试方面进展非常顺利,但是我遇到了一个棘手的问题。 假设我有一个简单的表格,例如: 如果我正在测试类似控制器的东西,我知道我会这样写(使用Jasmine + Karma): 但是我不知道我需要注入哪些服务,也没有运气在指南或文档中找到有关单元测试的文档。 一个单元如何在Angular中测试表单? 问题答案: 我不认为这是对此类内容进行单元测试的

  • 我有DaoImpl类: 我的测试是: 测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。

  • 最近,我尝试为akka参与者编写一些单元测试,以测试参与者消息流。我在测试中观察到一些奇怪的行为: 下一个 在我的代码中,我有: 基本上,有时(很少)这样的测试失败(在另一个操作系统上),并且抛出processMessage方法的异常(由于业务逻辑导致的IllegalStateException)。

  • 我有以下方法,它采用UNIX时间戳并以天、小时或分钟的形式返回年龄。我想用JUnit单元测试它,但我不确定如何开始这样做,因为当前时间不断变化。有什么建议吗?谢谢! 方法如下: }

  • 问题内容: 如何在单元测试中测试 hashCode()函数? 问题答案: 每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。 当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样:

  • 我已经创建了一个自定义弹性搜索客户端。我需要在各种功能上部署单元测试。我该怎么做呢? 下面是我的客户提供的一个方法。我应该如何在这里部署单元测试? 我该如何着手做这件事呢?