我已经开始使用Quick和Nimble编写iOS的第一个BDD测试,并且我有一个关于测试覆盖率的问题。BDD和测试覆盖率
我意识到,在传统的单元测试中,开发人员的目标是拥有100%的测试覆盖率。不过,我还没有读过BDD。如果我正确理解BDD,当我测试我的代码的行为时,那么实现的细节并不重要;重要的是,我从我的代码中获得预期的结果,对吗?
我开始试图获得100%的代码覆盖率,但它似乎开始写脆性测试,因为不是专注于我的代码的结果,而是试图覆盖我的代码可以采用的所有路径。
- 我是否正确理解BDD?
- 针对100%的代码覆盖率是否击败了BDD的目的?
BDD和TDD的区别并不在于测试覆盖面,而是关注软件中的行为而不是测试实现细节(测试API而不是实现,有人称之为), BDD和TDD都将导致100%的代码覆盖率,因为其中一个主要想法是在任何实现代码之前先编写测试。 –
您可以同时拥有100%的测试覆盖率,但BDD将确保您开发出正确的产品。 –
“我意识到,在传统的单元测试中,开发人员的目标是拥有100%的测试覆盖率”。他们当然不会。 100%的测试覆盖率意味着代码的所有分支至少被遍历一次,如覆盖工具所证明的那样。这通常是不必要的,除非你正在编写高度保密的代码(正式的方法可能更合适)。一个单元意味着要测试一个单元的正确功能,以便在错误修复和重构后,可以轻松检查功能是否正确。如果打算覆盖100%,那么也必须重写单元测试。 –