Java 深度优先遍历图递归测试

Java 深度优先遍历图递归测试,java,recursion,Java,Recursion,所以我写了一个解决方案,希望它能工作,但是我不知道如何测试它是否正常工作。在递归方法中,sor.edges只是通过相邻边进行迭代。如果任何其他方法需要澄清,请告诉我。谢谢 public static List<String> depthFirstSearch(Graph graph, String startName, String goalName) { Vertex source = new Vertex(startName); Vertex dest = new Ver

所以我写了一个解决方案,希望它能工作,但是我不知道如何测试它是否正常工作。在递归方法中,sor.edges只是通过相邻边进行迭代。如果任何其他方法需要澄清,请告诉我。谢谢

public static List<String> depthFirstSearch(Graph graph, String startName, String goalName)
{
Vertex source = new Vertex(startName);
    Vertex dest = new Vertex(goalName);
    ArrayList<String> returnList = new ArrayList<String>();

    if(!(graph.getVertices().containsKey(startName) || graph.getVertices().containsKey(goalName)))
    throw new UnsupportedOperationException();

    if(startName.equals(goalName))
    {
        returnList.add(startName);
        return returnList;
    }

    return DFS(source, dest);
}

private static List<String> DFS(Vertex sor, Vertex des)
{
    ArrayList<String> returnList = new ArrayList<String>();
    if(!sor.getName().equals(des.getName()))
    sor.setVisited(true);
    Iterator<Edge> iterator = sor.edges();
    while(iterator.hasNext())
    {
        Vertex nextVertex = iterator.next().getOtherVertex();
        if(!nextVertex.getVisited())
        {
            nextVertex.setCameFrom(sor);
            returnList.addAll((Collection<? extends String>) sor.getCameFrom());
            return DFS(nextVertex, des);
        }

    }
    return returnList;


}

他们的方法真的不是一种简单的自动化测试方法。我的建议是加入一些简单的图表,手工测试输出是否符合预期。另一个选项是两个测试。第一个是连通图,因为从开始到结束将存在一个路径,您只需要确认这是否生成了一个路径。第二个是一个不相交的图,其中第一个和最后一个没有连接,这里它们将是一个失败或类似的东西

对于您的问题,您可能希望抛出IllegalArguementException和UnsupportedOperationException