我在C
编写了一个应用程序。我是编写单元测试的新手。我将使用glib
测试框架。
我在维基百科中读到了这个article。我不确定我的单元测试应该涵盖什么。
我知道我的单元测试应该检查是否有效输入,获得了预期的结果。在为函数编写单元测试时,是否需要完成所有这些工作?
我每次修改时都应该检查每个变量的值吗?因为如果功能被扩展,那么可能会添加更多变量,并且可能会在其他各个地方修改当前变量,因此我将不得不更改测试本身。
请给我你的意见。
答案 0 :(得分:1)
我不确定我的单元测试应涵盖的内容。
对于您的代码,将单元测试看作规范(可运行的文档!)可能会有所帮助。
当代码被赋予无效输入时会发生什么?是否产生了预期的错误/错误代码?
代码所依赖的环境是什么?
最后两点实际上是前三个特例。这是因为单元测试不一定要测试单个独立的功能:
每次修改时,我还应该检查每个变量的值吗?
单元测试与他们测试的内容完全分开(通常称为系统测试,缩写为SUT)。也就是说,您的单元测试应该是单独的功能,其中您设置SUT,运行它,然后根据预期结果检查结果。
因此,您的单元测试功能将非常简单:
正如您所看到的,在如此简单的变量过程中没有太多空间可以随时改变它们的值。如果您进行了这样的单元测试,那么它可能太复杂而您可能想要更改它,例如分开了。
更改变量更可能出现在测试代码中(即在SUT中)。但那并不是你放置测试逻辑的地方。这是一个完全独立的功能,它构成了你的单元测试。
(请注意,我非常普遍地说,因为你还没有说过你用于单元测试的框架,所以在某些问题上我可能会稍微偏离。)