2012-10-13 4 views
1

Junit을 통해 샘플 HtmlUnit 테스트 케이스를 실행하려고합니다.예제 HtmlUnit 테스트 실패

내 프로젝트는 Maven 기반입니다. 모든 PAD를 컴파일하고 테스트 할 때 POM에 추가해야합니까? http://htmlunit.sourceforge.net/dependencies.html 지금은 htmlunit 종속성, httpconnections 및 nekohtml을 추가했습니다.

샘플 테스트 :

@Test 
public void homePage() throws Exception { 
    WebClient webClient = new WebClient(BrowserVersion.CHROME_16); 
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 

    assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText()); 

    final String pageAsXml = page.asXml(); 
    assertTrue(pageAsXml.contains("<body class=\"composite\">")); 

    final String pageAsText = page.asText(); 
    assertTrue(pageAsText.contains("Support for the HTTP and HTTPS protocols")); 

    webClient.closeAllWindows(); 
} 

시험은 다음과 같은 오류 승 실패 :

homePage(ActiveComponentTest) Time elapsed: 2.06 sec <<< ERROR! 
com.gargoylesoftware.htmlunit.ObjectInstantiationException: unable to create HTML parser 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.<init>(HTMLParser.java:427) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.<init>(HTMLParser.java:351) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:205) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:180) 
    at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:267) 
    at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:155) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:440) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:315) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:380) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:365) 
    at ActiveComponentTest.homePage(ActiveComponentTest.java:54) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:236) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:134) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:113) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) 
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) 
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74) 
Caused by: org.xml.sax.SAXNotRecognizedException: Feature 'http://cyberneko.org/html/features/scanner/allow-selfclosing-iframe' is not recognized. 
    at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.<init>(HTMLParser.java:420) 
    ... 43 more 
homePage(ActiveComponentTest) Time elapsed: 2.064 sec <<< ERROR! 
java.lang.NullPointerException: No document element (http://htmlunit.sourceforge.net/) 

    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1190) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.isOnbeforeunloadAccepted(HtmlPage.java:2123) 
    at com.gargoylesoftware.htmlunit.TopLevelWindow.close(TopLevelWindow.java:112) 
    at com.gargoylesoftware.htmlunit.WebClient.closeAllWindows(WebClient.java:1916) 
    at ActiveComponentTest.tearDown(ActiveComponentTest.java:43) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:236) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:134) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:113) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) 
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) 
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74) 
+1

난 당신이지고있어 오류가 아무것도 가지고 있다고 생각하지 않습니다 'pom.xml' 파일에 선언 된 의존성을 가지고 수행하십시오. –

답변

2

문제가 다른 당기는 된 날 내 POM에서 내 프로젝트 종속성 중 하나를 밝혀와 호환되지 않는 , nekoHTML의 버전.

일단 프로젝트 종속성 테스트에서 프로젝트를 테스트하지 않고 다른 프로젝트를 테스트하는 데 사용한 프로젝트가 아니라 모든 종속성을 제거하면 모든 작업이 정상적으로 수행됩니다. jlars62 @

+0

예, nekoHTML의 이전 버전을 제거하면 같은 오류가 해결됩니다. 감사. – Buddha

+0

문제의 종속성이 무엇인지 기억하십니까? 같은 오류가 발생했습니다 ... – jlars62

0

, 당신은 아마 당신의 치어이 같은 뭔가를 다음과 같이

<dependency> 
     <groupId>net.sourceforge.htmlunit</groupId> 
     <artifactId>htmlunit</artifactId> 
     <version>2.14</version> 
    </dependency> 

는 제외를 추가

<dependency> 
     <groupId>net.sourceforge.htmlunit</groupId> 
     <artifactId>htmlunit</artifactId> 
     <version>2.14</version> 
     **<exclusions> 
      <exclusion> 
       <groupId>net.sourceforge.nekohtml</groupId> 
       <artifactId>nekohtml</artifactId> 
      </exclusion> 
     </exclusions>** 
    </dependency>