gpt4 book ai didi

c - 在C语言中,单元测试应该写在Header文件中还是C文件中

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:52 25 4
gpt4 key购买 nike

我有一个包含结构声明和一些方法的头文件,以及一个定义(实现)结构和方法的“C”文件。现在在编写单元测试用例时,我需要检查一些结构变量(没有getter方法)是否被修改。由于结构的定义包含在C文件中,单元测试用例应该基于头文件还是C文件?

最佳答案

测试组件对系统其他部分可用的接口(interface),在您的案例中是 header ,而不是接口(interface)的实现细节。

单元测试对组件的行为做出断言,但不应依赖于该行为的实现方式。测试描述了组件做什么,而不是如何它是如何完成的。如果您更改实现但保留相同的行为,您的测试应该仍能通过。

如果相反,您的测试依赖于特定的实现,它们将很脆弱。更改实现将需要更改测试。这不仅是额外的工作,而且使测试应提供的保证无效。如果您可以针对新实现运行现有测试,您将确信新实现没有改变其他组件可能依赖的行为。一旦您必须更改测试以便能够针对新的实现运行它,您必须仔细考虑您是否在该过程中更改了任何测试的期望。

使用此组件的公共(public)接口(interface)测试无法访问的行为可能很重要。考虑一下这个界面可能设计得不好的一个很好的暗示。 TDD 鼓励“测试先行”的方法,这就是原因之一。如果您首先定义要对组件行为做出的断言,则必须设计一个接口(interface)来公开该行为。这就是流程“测试驱动”的原因。

如果您必须在他们测试的组件之后编写测试,那么至少要尝试利用这个机会重新评估设计并从您的测试中学习。这种行为要么是一个实现细节,不值得测试,要么应该更新接口(interface)以公开它(这可能比仅仅将其公开更复杂,因为系统的其他组件现在访问它也应该是安全和合理的公共(public)属性)。

关于c - 在C语言中,单元测试应该写在Header文件中还是C文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358783/

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