1

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

我将这些错误消息放在很多地方(以及任何可能发生错误或发生意外的地方)。

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

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

如上所述,我的方法做了很多错误处理。

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

  • 成功:测试预期的返回项(值、对象等)。
  • 失败:传入“坏”的东西,并检查我是否收到错误消息。

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

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

提前致谢,

对不起,如果这看起来像一个“愚蠢”的问题(它对我来说......有点)

4

1 回答 1

2

这听起来对我来说是一个很好的测试方法。如果您测试每种可能的场景并获得每种方法的所有结果,您还能做些什么?

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

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

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

那么最好测试一下如果 x 和 y 但不出现 z 会发生什么,如果 x 单独出现,如果 y 和 z 出现等等。这可能看起来很琐碎,但最好涵盖尽可能多的可能场景可能的。

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

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

于 2013-05-30T10:23:15.713 回答