单元测试:初学者问题

Vir*_*dia 12 php unit-testing

我终于开始进行单元测试了,我知道我应该这样做一段时间,但我有几个问题:

  • 如果没有覆盖任何方法,我应该或不应该在测试子类时重新测试父类?
  • 从概念上讲,您如何测试表单的提交部分?我正在使用PHP.(编辑:我问这个的原因是我有一个高级表单类,它生成一个表单,验证它,过滤它,并通过将类似JSON的数组作为输入并委托给各种较小的类来生成任何错误消息但是,我不能没有提交表单测试误差等.编辑:看起来似乎是一个答案).
  • 如果方法中有可选参数,那么当它们存在时和不存在时,是否应该为它们编写测试?
  • 单元测试是否应该与测试代码执行时间相结合,还是应该完全分开?
  • 是否有任何正当理由不在每次都运行完整的测试套件?
  • 就这样,我的术语是正确的,单元测试中的单位是指什么?正在测试的课程?方法?参数?别的什么?

duf*_*ymo 9

  • 测试父母,测试孩子; 如果孩子没有覆盖父方法,则无需重新测试.
  • 我不确定我理解第二个.您可以使用Selenium自动测试表单.你是这个意思吗?
  • 测试应包括"快乐路径"和所有边缘情况.如果您有可选参数,请编写测试以显示存在且不存在的值的正确操作.
  • 单元测试,集成测试,验收测试,负载测试都是可能有一些重叠的不同想法.
  • 我敢打赌,有合理的理由,但如果您正在进行自动运行测试套件的自动构建,为什么不运行它们?也许长时间会浮现在脑海中,但这是我能想到的唯一原因.价值观是所有这些都继续传递,而你所做的改变并没有破坏任何东西.
  • 对我进行单元测试意味着您正在测试的类,它可以有多种方法.我把它们与课程联系起来,而不是形式.表单意味着对我进行UI和集成测试.


sch*_*der 6

(与你的问题的顺序不一样)

  • 如果完整的测试套件不需要太长时间,您应该始终完成它.您通常不知道确切的变化可能导致哪些副作用.

  • 如果您可以将速度测试与您最喜欢的单元测试工具结合起来,那么您应该这样做.这为您提供了有关更改质量的其他信息.但只能对代码的时间关键部分执行此操作.

  • 来自维基百科:"单位是应用程序中最小的可测试部分."