在测试调用其他方法的方法时,如何避免多次编写相同的测试

本文关键字:方法 测试 其他 调用 何避免 | 更新日期: 2023-09-27 18:29:18

我使用C#,尽管这个问题可能适用于任何语言。

我有两种方法A和B。A做了一些事情,并且有5个单元测试。B基本上和A一样,但也做了一些其他的事情。B在其实现中调用A。

我该如何测试A和B?复制和粘贴A的测试似乎有很多不必要的重复。如果A属于另一个类,我们可以模拟该类并验证A是否被调用,但由于A和B是同一个类的一部分,我们不能在这里这样做。

在这种情况下,最佳做法是什么?

在测试调用其他方法的方法时,如何避免多次编写相同的测试

我认为Oliver的想法是正确的,但我会尝试解释一下,因为似乎还有一些困惑。

你首先要为方法a编写一组测试。然后,当你为B编写一套测试时,你应该只测试B中的功能。这意味着,当你给B编写测试时,应该假设a工作得很好,因为你已经测试过了。在这种情况下,我不担心嘲笑a。

顺便说一句,我怀疑a不需要公开。它是从班外叫的吗?如果没有,我会把它私有化,然后写一组测试,测试A到B。

或者,如果A足够复杂,以至于您想单独测试它,那么它可能需要分解成自己的辅助类。如果你愿意的话,你也可以嘲笑它。

如果你能给出一些示例代码,它也会让你更容易得到帮助。

因此,只需为方法B应该做的事情编写测试。如果它在内部调用另一个私有或公共方法,或者可能通过内部代码克隆(或其他任何方法)实现相同的方法,对您来说都无关紧要。

每次测试只测试一件事。如果你有A的所有测试和B的所有测试,并且你做出了任何突破性的更改,你会从测试环境中得到通知。