首页 > 解决方案 > 如何使用列表实现深度优先遍历测试?

问题描述

我正在尝试测试我的 DepthFirstTraversal。只是,我将如何根据我为其编写的代码对其进行测试。

这是我正在使用的方法,(add 方法来自另一个类,它是从另一个类扩展而来的,而 traverse 方法是从另一个类实现的):

public class DepthFirstTraversal  {
        private List traversal = new ArrayList();

这就是我尝试使用 List 测试它的方式,因为这是我在深度优先遍历类中声明的:

@Test
        void willItDepthFirst(){
                DepthFirstTraversal b = new DepthFirstTraversal();
                b.add(1);//add node
                b.add(0);
                b.add(2);
                b.add(3);
                b.add(4);
                b.add(0,1);//connect nodes with edges
                b.add(1,2);
                b.add(2,3);
                b.add(0,4);

                b.traverse();
                List<Integer> c= Arrays.asList(0,1,4,2,3);

                assertEquals(c,b);
        }

然而,这是我得到的错误。:

org.opentest4j.AssertionFailedError: 
Expected :[0, 1, 4, 2, 3]
Actual   :graph.DepthFirstTraversal@6536e911

编辑:删除了不必要的方法

标签: java

解决方案


正如评论中提到的,您需要检查traverse()方法的返回值,而不是对象本身:

List<Integer> result = b.traverse();
List<Integer> expected = Arrays.asList(0,1,4,2,3);

assertEquals(expected, result);

推荐阅读