gpt4 book ai didi

java - HTML 解析的 JUnit 测试

转载 作者:行者123 更新时间:2023-12-02 07:41:41 25 4
gpt4 key购买 nike

我正在尝试在网络爬虫上设置单元测试,但对于如何测试它们感到相当困惑。 (我只做过一次单元测试,而且是在计算器程序上进行的。)

以下是该程序中的两个示例方法:

protected static void HttpURLConnection(String URL) throws IOException {

try {
URL pageURL = new URL(URL);

HttpURLConnection connection = (HttpURLConnection) pageURL
.openConnection();
stCode = connection.getResponseCode();
System.out.println("HTTP Status code: " + stCode);

// append to CVS string
CvsString.append(stCode);
CvsString.append("\n");

// retrieve URL
siteURL = connection.getURL();
System.out.println(siteURL + " = URL");

CvsString.append(siteURL);
CvsString.append(",");
} catch (MalformedURLException e) {
e.printStackTrace();
}
}

和:

public static void HtmlParse(String line) throws IOException {

// create new string reader object
aReader = new StringReader(line);

// create HTML parser object
HTMLEditorKit.Parser parser = new ParserDelegator();

// parse A anchor tags whilst handling start tag
parser.parse(aReader, new HTMLEditorKit.ParserCallback() {
// method to handle start tags
public void handleStartTag(HTML.Tag t, MutableAttributeSet a,
int pos) {
// check if A tag
if (t == HTML.Tag.A) {
Object link = a.getAttribute(HTML.Attribute.HREF);
if (link != null) {
links.add(String.valueOf(link));

// cast to string and pass to methods to get title,
// status
String pageURL = link.toString();
try {
parsePage(pageURL); // Title - To print URL, HTML
// page title, and HTTP status
HttpURLConnection(pageURL); // Status
// pause for half a second between pages
Thread.sleep(500);

} catch (IOException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}, true);
aReader.close();
}

我在 Eclipse 中设置了一个测试类,并概述了以下测试方法:

@Test
public void testHttpURLConnection() throws IOException {
classToTest.HttpURLConnection( ? );
assertEquals("Result", ? ? )
}

我真的不知道该去哪里。我什至不确定是否应该测试实时 URL 还是本地文件。我在这里发现了这个问题:https://stackoverflow.com/questions/5555024/junit-testing-httpurlconnection但我无法真正理解它,而且我不确定它是否已解决。任何指示表示赞赏。

最佳答案

您的问题没有一个确定的答案,您测试的内容取决于您的代码的用途以及您想要测试它的深度。

因此,如果您有一个解析方法,它接受 HTML 并返回字符串:“这是一个解析的 html”(显然不是很有用,但只是说明一点),您将像这样测试它:

@Test
public void testHtmlParseSuccess() throws IOException {
assertEquals("this is a parsed html", classToTest.parse(html) ) //will return true, test will pass
}

@Test
public void testHtmlParseSuccess() throws IOException {
assertEquals("this is a wrong answer", classToTest.parse(html) ) //will return false, test will fail
}

除了 assertEquals() 之外,还有很多方法,所以你应该看看 here .

最终由您决定测试哪些部分以及如何测试它们。

关于java - HTML 解析的 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11504143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com