我终于开始进行单元测试了,我知道我应该这样做一段时间,但我有几个问题:
答案 0 :(得分:9)
答案 1 :(得分:6)
(与你的问题的顺序不一样)
如果完整的测试套件不需要太长时间,则应始终将其完整运行。您通常不知道确切的变化可能导致哪些副作用。
如果您可以将速度测试与您最喜欢的单元测试工具结合使用,那么您应该这样做。这为您提供了有关更改质量的其他信息。但只能对代码中对时间要求严格的部分执行此操作。
来自维基百科:“单位是应用程序中最小的可测试部分。”
答案 2 :(得分:2)
按顺序回答问题:
答案 3 :(得分:2)
我会回答那些我能做的事。
如果没有覆盖任何方法,我应该或不应该在测试子类时重新测试父类吗?
您应该完全测试父级,然后仅测试中孩子的更改。
如果方法中有可选参数,那么当它们存在时和不存在时,是否应该为它们编写测试?
是的,测试导致行为改变的任何事情。
单位测试是否应该与测试代码执行时间相结合,还是应该完全分开?
他们应该保持分开。单元测试是测试方法是否符合预期。您应该在系统级别测试代码执行时间,然后将其分解以找到瓶颈。测试每个单元的性能只会导致过早优化。
是否有任何正当理由不在每次都运行完整的测试套件?
如果您的测试套件很庞大并且需要很长时间,那么您可能只想在开发时运行的子集。当你(想想)完成后你应该运行整个套件,以确保你没有破坏任何其他东西。
就这样,我的术语是正确的,单元测试中的单位是指什么?正在测试的课程?方法?参数?还有别的吗?
“单位”是指正在测试的方法。这是将软件分解为最有意义的最小单元。 A类的方法可能使用B类,但您为该方法编写的任何测试都不应该关注。试试那个方法。