错误处理和单元测试以及代码覆盖率

时间:2013-05-30 10:19:44

标签: testing error-handling code-coverage

我正在创建一堆供个人使用的库,我将自定义错误处理插入到我的代码中。

我把这些错误信息放在很多地方(到处都可能发生错误,或发生不可预测的事情)。

我现在正在为我的库创建测试类(实际上我创建了测试类,但是......)

我一直在阅读代码覆盖等方面的内容,我对我的流程有疑问(我想养成良好的习惯)。

如上所述,我的方法会进行大量的错误处理。

在我的测试中,我创建了2个测试

  • 成功:测试预期的退货项目(价值,对象等)。
  • 失败:传递“坏”内容,并检查我收到错误消息。

这似乎是测试我的代码的有效方法,但我读的越多,我就越不确定。

欢迎任何有关如何改进测试的建议(或指向网上资源的指示)。

提前致谢,

抱歉,如果这看起来像一个'愚蠢'的问题(它对我有用......一点点)

1 个答案:

答案 0 :(得分:2)

这听起来像是一种很好的测试方式。如果您测试每个可能的场景并获得所涵盖的每个方法的每个结果,那么您还可以做些什么?

确保测试成功运行,然后查看代码并查看可能出错的所有内容。测试它以你期望的方式失败,并抛出预期的异常等等。因此,不是像你现在一样编写两个测试,而是为每个可能的失败写一个,同时用一些来检查它是否通过了预期。这可能意味着要写很多测试。

例如,如果你有这样的代码:

if (x && y && z) {
  ...
} else {
  ...
}

然后测试如果x和y但不是z发生会发生什么,如果x单独出现,如果y和z出现等等,这可能是一个好主意。这可能看起来很小,但是覆盖尽可能多的是一个好主意可能的情况。

在养成良好习惯方面,编写测试的最佳方法是随着时间的推移编写测试。所以,编写测试,编写代码以通过测试,重复。这意味着所有编写的代码都会增加价值,并帮助您将问题分解为更小的块。这被称为TDD(测试驱动开发)。有很多地方可以在线阅读TDD,包括http://www.agiledata.org/essays/tdd.html

等网站

希望这个答案有所帮助。如果您对我所说的任何内容有任何额外的解释,请告诉我。