Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试深度优先树_Java_Unit Testing_Tree_Depth First Search - Fatal编程技术网

Java 测试深度优先树

Java 测试深度优先树,java,unit-testing,tree,depth-first-search,Java,Unit Testing,Tree,Depth First Search,我制作了一个Java程序,以深度优先的方式浏览一棵树。程序是正确的,但是节点的子节点的选择是随机的。例如,在此树中: 有时,结果是: A-B-E-C-F-D A-C-F-D-B-E A-B-E-D-C-F 我想对这个程序进行测试单元测试,但我不知道该怎么做?请 我想做一个包含元素的列表,并将列表中的元素与深度优先树的结果进行比较,但深度优先树的结果是随机的。然后,我无法将其与列表中的元素进行比较。我还没有单击您的链接,但是如果代码确实是随机的,并且是预期的,那么您应该进行单元测试,以便它表明给定

我制作了一个Java程序,以深度优先的方式浏览一棵树。程序是正确的,但是节点的子节点的选择是随机的。例如,在此树中:

有时,结果是:

A-B-E-C-F-D A-C-F-D-B-E A-B-E-D-C-F 我想对这个程序进行测试单元测试,但我不知道该怎么做?请


我想做一个包含元素的列表,并将列表中的元素与深度优先树的结果进行比较,但深度优先树的结果是随机的。然后,我无法将其与列表中的元素进行比较。

我还没有单击您的链接,但是如果代码确实是随机的,并且是预期的,那么您应该进行单元测试,以便它表明给定此输入,那么输出必须是这三件事之一。这并不理想,因为在bug出现之前可能需要多次运行,也就是说,在您运行它的前几次,它可能只是随机屏蔽bug,但我怀疑这是测试具有随机行为的算法的最佳方法。

我没有点击您的链接,但是如果代码确实是随机的,并且是预期的,然后,您应该进行单元测试,这样它就会说,给定这个输入,那么输出必须是这三件事之一。这并不理想,因为在bug出现之前可能需要多次运行,也就是说,在您运行它的前几次,它可能只是随机屏蔽bug,但我怀疑这是测试具有随机行为的算法所能做的最好的方法。

为单元测试选择一个只有几个有效结果的数据集,但显然它应该有多个结果,并测试结果是否是其中之一


或者,您可以尝试对节点施加定义明确的顺序,例如,通过按字母顺序对每个节点的子节点进行排序,而不是在一个集合中管理它们

为单元测试选择一个只有几个有效结果的数据集,但显然它应该有多个结果,并测试结果是否是其中之一


或者,您可以尝试在节点上施加定义明确的顺序,例如,通过按字母顺序对每个节点的子节点进行排序,而不是在一个集合中管理它们。这意味着每个节点的子节点的顺序是不确定的。你可能用了一套来抱孩子。考虑使用一个保存插入顺序或排序子集的链接子集。这样,顺序将始终保持不变


如果随机性是树的一个特征,并且您希望保持它的原样,那么请查看其他答案,或者更改算法本身,以确保在遍历树时始终对子节点进行排序。

这意味着每个节点的子节点的顺序是不确定的。你可能用了一套来抱孩子。考虑使用一个保存插入顺序或排序子集的链接子集。这样,顺序将始终保持不变


如果随机性是树的一项功能,并且您希望保持它的原样,那么请查看其他答案,或者更改算法本身,以确保在遍历树时始终对子项进行排序。

有两个属性需要测试:

每个节点只访问了一个节点 遍历是深度优先 第一个很容易测试:访问的唯一节点数必须等于树中的节点数。可以对任何随机树进行测试

第二种方法稍微复杂一些——在一般情况下表达它可能比测试代码更复杂。仅根据特定已知数据选择一些具有代表性的约束更容易,即

B一定是在A之后 E必须紧跟在B之后 ...
很难想象现实的代码满足所有树的第一个属性,但只有在特定情况下第二个属性才会失败。因此,在最正式的安全关键系统之外,以及它们使用动态数据结构做什么,这就足够了。

有两个属性需要测试:

每个节点只访问了一个节点 遍历是深度优先 第一个很容易测试:访问的唯一节点数必须等于树中的节点数。可以对任何随机树进行测试

第二种方法稍微复杂一些——在一般情况下表达它可能比测试代码更复杂。仅根据特定已知数据选择一些具有代表性的约束更容易,即

B一定是在A之后 E必须紧跟在B之后 ...
很难想象现实的代码满足所有树的第一个属性,但只有在特定情况下第二个属性才会失败。因此,在最正式的安全关键系统之外,他们使用动态数据结构做什么?这就足够了。

谢谢你的回答,但是如果我使用集合,顺序没有规定,我的深度优先可能是错误的,我没有意识到我的错误。你没有理解我的意思。树本身的节点可能使用一个集合来包含其子节点
N向我们展示树的实现。感谢您的回答,但是如果我使用集合,则顺序没有指定,我的深度优先可能是错误的,我没有意识到我的错误。您错过了我的意思。树本身的节点可能使用一个集合来包含其子节点。向我们展示树的实现。欢迎@user1149157。请使用格式选项、浏览器拼写更正和避免问候语。欢迎@user1149157。请使用格式选项、浏览器拼写更正和避免问候语。