gpt4 book ai didi

java - 如何确保单元测试在这种情况下保持正确?

转载 作者:行者123 更新时间:2023-12-02 04:56:50 24 4
gpt4 key购买 nike

我真的不知道如何简洁地解释我的情况,所以我必须描述一下场景。

我有一个进程 A,它接受输入 X 并产生输出 Y。我有一个单独的进程 B,它接受输入 Y(来自进程 A)并产生输出 Z。

流程 A 和 B 都很复杂,因此可以从单元测试中受益。进程 A 和 B 也可能会发生变化,因此“中间”格式 Y 也会发生变化。

如果我只是对输入 Y 的 B 进行单元测试,那么如果流程 A 发生变化,我如何确保它们保持相关性和正确性?例如,进程 A 将输入“foo”转换为“bar”。 B 的单元测试将“bar”作为输入并将其转换为“overflow”。如果进程 A 发生变化,现在将“foo”变成“fish”,那么我对 B 的单元测试仍然会通过,但它们的值(value)值得怀疑,因为它们不再测试预期的输入。

解决这种情况的最佳做法是什么?这种情况有名字吗?

此外(为了增加复杂性),进程 B 是 Java,但进程 A 是 Visual Basic。

我知道“超越”单元测试并执行集成测试将是确保输入 X 可以成为输出 Z 的一种方法,但由于我们对流程 B 进行了大量测试,我们如何确保这些测试保持相关性? (而且当一个是 Visual Basic 而另一个是 Java 时,这并不容易)。

最佳答案

我想您已经知道答案:集成(端到端)测试。如果设置不可行,您能做的最好的事情就是分别测试 X/Y 和 Y/Z,并确保只要其中一个发生故障(由于代码更改),您就更新另一个以保持测试数据的相关性。

在我看来,投资建立适当的集成测试套件要安全得多,特别是如果端到端流程符合用户的期望。最后,他们不会关心你的任何好的单元测试,他们只是想看到你的软件针对他们的特定输入执行特定的操作。因此,编写端到端行为测试更加面向 future ,并且可以很好地记录您的软件的功能。

关于java - 如何确保单元测试在这种情况下保持正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684143/

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