如何确定依赖图解决方案是正确的

时间:2011-08-18 06:20:25

标签: unit-testing testing graph dependencies

我创建了一个类,它采用有向图,该图中的顶点,并输出一个可接受的顶点序列,以通向该顶点。

e.g。

  • A->乙
  • A-&以及c
  • B-> d
  • C-> d

顶点D的两个可能序列是:

  • A-> B-> C-> d
  • A-> C-> B-> D

现在,我需要设计一个测试来确定我的程序提供的解决方案是否正确。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你的问题很常见。基本上有两种类似且简单的方法来处理它:

  • 将节点序列放入集合中并检查集合大小以及是否包含所有序列

  • 根据一些已知算法对序列进行排序(例如,通过比较一个接一个节点)。现在订单总是一样的。

在Java中,这意味着:

  • 为节点序列实现equalshashCode(如果类似于List<Node>,则为{{equals实施hashCodeNode 1}}代替)并将它们放在HashSet中。然后只需检查集合是否具有正确的大小并包含两个路径。

  • 制作节点Comparable的序列并对它们进行排序。然后订单总是已知并且已修复。在您的情况下,只需逐个比较相应的节点。

答案 1 :(得分:0)

您可以使用基于Cyclomatic Complexity的算法来计算应该找到的路径数量,这将是一个很好的理智检查 - 尤其是如果您有一个非常大的图表,获得正确数量的路径会让人放心(虽然不能保证路径本身是正确的!)。从广义上讲,边数减去节点数 - 你会看到维基百科页面上的细微差别。