2011-05-03 116 views
0

我刚开始学习单元测试,我认为这是一个非常好的工具,我想要开始使用我的所有项目,但是我仍然不确定如何测试一些东西。 作为一个例子,我正在实现一个队列,它的一个方法是AddNode,我也有一个模拟对象来表示队列中的节点,写完方法后我不知道该怎么测试。该方法是无效的,所以我无法测试返回值,也许我应该测试出内存异常或其他异常?或者在这种情况下可能不需要做任何测试。需要单元测试的建议

+0

“作为一个例子,我正在实施一个队列”。为什么?标准或可选库中是否没有适合该账单的队列?提高测试覆盖率的最佳方法是尽量减少维护自己所需的代码量。 – Thilo 2011-05-03 01:13:15

+0

这是我的任务的一部分。 – 2011-05-03 01:22:49

回答

1

对于ADDNODE你可以测试以下内容:

  • 队列不为空之后
  • 规模已经增加了一个
  • 如果队列检查重复,该尺寸还没有加入后增加一个副本
  • 来回:new Queue,addNode,getNode再次返回相同的节点
  • 如果队列检查无效对象(无空值,错误的节点类型或某物),那么当你尝试添加这些东西时,ere是个例外。

请注意,其中一些测试不会孤立地测试AddNode(它们还需要调用其他方法)。这不是问题。你是单元测试的类,而不是单个的方法。

+0

“你是单元测试的课程,而不是单个方法”。我同意你的看法,但我认为我应该一步一步地构建它,编写一个方法然后测试它,再写一个然后测试它,等等,直到我完成完整的类的测试。 – 2011-05-03 01:31:19

+0

对班级中的每个公共方法都有一个测试方法是一种很好的方法。但是,您仍然可以调用其他方法来声明预期的行为。顺便说一下,您不能确定该类是否已通过确保所有方法至少被调用过一次而完全测试过。您还需要对所有可能的案例/代码路径进行有意义的断言。 – Thilo 2011-05-03 01:35:32

+0

我不是每个方法只进行一次测试,而是试图涵盖出错的每一种可能性。 – 2011-05-03 01:43:32