gpt4 book ai didi

java - 测试从数据结构检索而不测试存储

转载 作者:行者123 更新时间:2023-11-30 07:47:38 25 4
gpt4 key购买 nike

假设我想为一个新的、未经测试的数据结构 BlackBox 编写一些 JUnit 测试。它有一个类似于 Map 的界面,但无法知道其内部发生了什么:

blackBox.get(key);
blackBox.put(key, value);

在以下两种情况下如何正确地对 .get.put 进行单元测试?我不知道如何独立测试两者。

  1. 我正在使用 TDD,因此想先编写测试。
  2. BlackBox 是由其他人编写的,我想测试一下。

我知道如果我有权访问源代码,我可以执行以下操作:

Whitebox.setInternalState(blackBox, "storage", storageObject);
assertEquals(blackBox.get("key"), expectedAnswer");

我可以做相反的事情来测试.put()。问题是这些测试依赖于类的实现。

那么,在不知道或不依赖类的实现细节的情况下,如何单独测试 .get.put 呢?

最佳答案

I cannot figure out how to test the two independently.

你为什么要这么做?契约(Contract)是否规定他们是独立的?我不这么认为。我猜契约(Contract)上写着:

  1. 新对象被创建为空,因此 get 将返回 null/抛出异常。
  2. 当您放置某物时,您就可以获取它。
  3. 您无法获取您未放入的内容。
  4. 当您在同一键上多次输入时,您将获得最新值。

等等。您可以测试每个不变量。当您使用Whitebox时,您开始测试实现细节,而不是契约(Contract),这使得重构(例如使用更快的实现)变得更加困难

关于java - 测试从数据结构检索而不测试存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com