如何使用断言来测试这个java代码?

时间:2014-10-12 20:55:21

标签: java junit assertions

我的家庭作业是读取URL并将该URL的所有超链接打印到文件。我还需要提交一个至少有一个断言的junit测试用例。我已经看过不同形式的Assert,但我无法想出任何适用于我的代码的用法。任何帮助我朝着正确方向前进的帮助都会很棒。

(我不是在寻找任何人为我编写测试用例,只是指导我应该查看的方向)

public void saveHyperLinkToFile(String url, String fileName)
throws IOException
{

    URL pageLocation = new URL(url);
    Scanner in = new Scanner(pageLocation.openStream());
    PrintWriter out = new PrintWriter(fileName);

    while (in.hasNext())
    {
        String line = in.next();
        if (line.contains("href=\"http://"))
        {
            int from = line.indexOf("\"");
            int to = line.lastIndexOf("\"");
            out.println(line.substring(from + 1, to));

        }


    }
    in.close();
    out.close();

}

}

1 个答案:

答案 0 :(得分:1)

尝试将您的方法分解为更简单的方法:

  • List<URL> readHyperlinksFromUrl(URL url);
  • void writeUrlsToFile(List<URL> urls, String fileName);

您已经可以通过将示例文档保存为资源并针对该资源运行它来测试您的第一个方法,并将结果与​​已知的URL列表进行比较。

您还可以通过重新读取该文件来测试第二种方法。

但你可以进一步分解:

  • void writeUrlsToWriter(List<URL> urls, Writer writer);
  • Writer createFileWriter(String fileName);

现在,您可以通过写入StringWriter并通过使用样本值声明writer.toString()的相等性来检查写入的内容来测试您的第一个方法。并非方法变得更简单和简单。

将整个事情先测试,甚至自己玩ping-pong,实际上是一个非常好的练习。

祝你好运,编码愉快。