我想在一个网络爬虫上设置单元测试,并且对我如何测试它们感到困惑。 (我只是做单元测试一次,它是在一个计算器程序。)JUnit测试HTML解析
以下是方案二实例方法:
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", ? ?)
}
我真的不知道WH可以从这里出发。我甚至不确定我是应该测试实时URL还是本地文件。 我在这里发现这个问题:https://stackoverflow.com/questions/5555024/junit-testing-httpurlconnection 但我不能真的按照它,我不知道它被解决无论如何。 任何指针赞赏。
谢谢 - 我要检查那本食谱。 – Robert 2012-07-16 12:33:47