Answers:
单元测试的一个流行定义是ISTQB:
单元测试是应用程序中最小的可测试部分,例如功能,类,过程,接口。单元测试是一种测试源代码的各个单元以确定它们是否适合使用的方法。
根据这个定义:
现在,意图和测试范围可能有所不同。如果使用C编写针对B的测试程序,它仍然是C的单元测试,因为您所能做的就是向C提供输入,并根据输出检查B是否正确。只是您推断B有效,因为C有效。
集成测试也有一个定义:
进行测试以暴露接口以及集成组件或系统之间的交互中的缺陷。
软件组件的通常定义意味着它是独立的,可以单独部署。在这里,B和C似乎不是独立的组件,因此我们没有集成测试。
是的,如果这些函数调用其他函数,我们仍将其称为单元测试。
单元测试应该测试类的公共行为,而不是私有实现。正如Google对厕所文章的测试所建议的那样。
如果您遵循“ 清理代码”的规则,则您的函数不应超过4行代码。这样就不可能不使用单元测试来测试另一个私有功能。
为什么不对大多数私有功能分别进行单元测试?因为重构将迫使您不断更新所有实施单元测试。当您有很多行为时,这将令人沮丧,而重构期间公共行为不应更改,因此测试不需要任何更新。您应该可以与他们的公共父母一起测试私人。有时值得对复杂的私有对象进行测试,但是想知道他们是否应该自己成为一个单独的类?
整合测试:
现在,如果函数是另一个类的一部分,则有所不同。然后我们将其称为组件测试或集成测试。您正在集成多个类,并对它们进行测试。功能B将取决于功能C。要能够对功能B进行单元测试,您可以使用依赖注入来隔离要测试的功能,现在它将再次成为单元测试。