2016-09-02 6 views
6

그래서 최근에 IDE를 사용하여 기존 테스트 스위트를 실행하려고 시도하면서 TestNGException을 시작했습니다. 최근에는 intelliJ 및 종속성을 최신 버전으로 작업하도록 업데이트하는 것을 의미합니다.org.testng.TestNGException PoolingHttpClientConnectionManager에 액세스하는 중

코드 사용

ITests.java - -

public class ITests extends BaseTest { 
    private final Action action = new Action(); 
} 

BaseTest (바로 공유를 다음과 같이 코드와 실패의 스택 트레이스입니다 구문) -

,210

Action.java -

public class Action { 
    private final Http http = Http.getInstance(); 
} 

Http.java -

public class Http { 

    private static final Http INSTANCE = new Http(); //line 36 

    public static Http getInstance() { 
     return INSTANCE; 
    } 

    private Http() { 
     PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); //line 43 
     connectionManager.setMaxTotal(100); 
     connectionManager.setDefaultMaxPerRoute(100); 
     RequestConfig defaultRequestConfig = RequestConfig.custom() 
       .setSocketTimeout(60000) 
       .setConnectTimeout(60000) 
       .setConnectionRequestTimeout(60000) 
       .build(); 
     this.client = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig) 
       .setConnectionManager(connectionManager).build(); 
    } 
} 

메이븐 종속성 -

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.5.2</version> 
</dependency> 

스택 트레이스 -

org.testng.TestNGException: 
Cannot instantiate class com.package.tests.test.ITests 
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40) 
    at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:382) 
    at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:295) 
    at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:118) 
    at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:183) 
    at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:128) 
    at org.testng.TestRunner.initMethods(TestRunner.java:416) 
    at org.testng.TestRunner.init(TestRunner.java:242) 
    at org.testng.TestRunner.init(TestRunner.java:212) 
    at org.testng.TestRunner.<init>(TestRunner.java:159) 
    at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:549) 
    at org.testng.SuiteRunner.init(SuiteRunner.java:161) 
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:114) 
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1290) 
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1277) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1131) 
    at org.testng.TestNG.run(TestNG.java:1048) 
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) 
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29) 
    ... 18 more 
Caused by: java.lang.NoSuchMethodError: org.apache.http.impl.conn.CPool.setValidateAfterInactivity(I)V 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:176) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:158) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:149) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:125) 
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:116) 
    at com.package.core.Http.<init>(Http.java:43) 
    at com.package.core.Http.<clinit>(Http.java:36) 
    at com.package.tests.action.Action.<init>(Action.java:16) 
    at com.package.tests.test.ITests.<init>(ITests.java:24) 
    ... 23 more 

- 나는 maven exec:java를 사용하여 테스트를 실행하는 동안 실행이 잘 간다, 그래서 우리의 프로젝트는 받는다는에 기지입니다.

다른 정보를 요청하십시오.

편집 1 - @hunter에 의해 질문으로

, 디버깅은로드 된 곳에서 Cpool의 정확한 경로를 얻을 수 있습니다. 평가 -

Class.forName("org.apache.http.impl.conn.CPool").getResource‌​("CPool.class") 

결과 -

파일 :! /Users/xyz/.m2/repository/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar/org/apache/http/impl/conn/CPool.2.8 : 나무

- [httpcomponents 가장 관련]

mvn dependency:tree -

--- 받는다는 - 종속성 - 플러그인 클래스

편집 2 com.package : core : jar : 1.1.3

+- org.apache.httpcomponents:httpclient:jar:4.5.2:compile | +- org.apache.httpcomponents:httpcore:jar:4.4.4:compile | +- commons-logging:commons-logging:jar:1.2:compile | \- commons-codec:commons-codec:jar:1.9:compile 
+- com.google.collections:google-collections:jar:1.0:compile 
+- commons-io:commons-io:jar:2.5:compile 
+- org.apache.commons:commons-lang3:jar:3.4:compile 
+- org.json:json:jar:20160810:compile \- org.testng:testng:jar:6.9.9:compile 

com.package : 시험 : 항아리 : 1.1.3

+- mysql:mysql-connector-java:jar:6.0.3:compile 
+- org.apache.httpcomponents:httpclient:jar:4.5.2:compile | +- org.apache.httpcomponents:httpcore:jar:4.4.4:compile | +- commons-logging:commons-logging:jar:1.2:compile | \- commons-codec:commons-codec:jar:1.9:compile 
+- com.package:mobile:jar:3.6.2:compile | +- com.pkg.serviceproxy:http-handler:jar:1.7.41:compile | | +- org.apache.httpcomponents:httpcore-nio:jar:4.3:compile | +- com.pkg:bullseye-model:jar:1.2.0:compile | | +- com.codahale.metrics:metrics-httpclient:jar:3.0.2:compile | +- kpg:pz-api:jar:0.2.38:compile | | \- com.mashape.unirest:unirest-java:jar:1.4.7:compile | |  +- org.apache.httpcomponents:httpasyncclient:jar:4.0.2:compile | |  \- org.apache.httpcomponents:httpmime:jar:4.3.6:compile 
+- com.package:core:jar:1.1.3:compile 

com.package : 드라이버 : 항아리 : 1.1.3

,363,210
\- com.package:test:jar:1.1.3:compile 

편집 3- 인 IntelliJ IDEA - 15.0.3 [커뮤니티] -

벤딩 더 향해 - 4 2016

편집 19 년 1 월에 업데이트 intelliJ, 로그를 공유하는 게시물을 사용하여 테스트를 실행 testng.xml -> right click -> run

IDEA에서 691,363,210
> objc[21590]: Class JavaLaunchHelper is implemented in both 
> /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java 
> and 
> /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/libinstrument.dylib. 
> One of the two will be used. Which one is undefined. 
> [[email protected]] error can't determine annotations of missing 
> type javax.cache.annotation.CachePut when weaving type 
> com.intellij.rt.execution.application.AppMain when weaving classes 
> when weaving [Xlint:cantFindType] [[email protected]] error 
> can't determine annotations of missing type 
> javax.cache.annotation.CacheResult when weaving type 
> com.intellij.rt.execution.application.AppMain when weaving classes 
> when weaving [Xlint:cantFindType] [[email protected]] error 
> can't determine annotations of missing type 
> javax.cache.annotation.CacheRemove when weaving type 
> com.intellij.rt.execution.application.AppMain when weaving classes 
> when weaving [Xlint:cantFindType] [[email protected]] error 
> can't determine annotations of missing type 
> javax.cache.annotation.CacheRemoveAll when weaving type 
> com.intellij.rt.execution.application.AppMain when weaving classes 
> when weaving [Xlint:cantFindType] 
+0

테스트 디버그 및 첫 번째 줄 Http 생성자를 넣고 중단 점 적중 횟수가이 식을 계산할 때 Class.forName ("org.apache.http.impl.conn.CPool"). getResource ("CPool.class") – hunter

+0

@hunter - 그게, 우리가 그걸로 무엇을 달성하려고 시도 했는가? (읽기 - 어떤 정보가 reqd인지 게시 하시겠습니까?) – nullpointer

+0

Cpool이로드 된 곳이 표시 될 것입니다. 일반적으로 로컬 Maven Repo 그러나 우리는 날씨 아이디어 실행 시간이 올바른 항아리를 가리키는 지 확인할 수 있습니다. 그것은 경로를 표시해야합니다, pls 그 결과와 함께 게시물을 업데이 트 – hunter

답변

2

, Maven 프로젝트 탭표시 종속성 버튼을 클릭합니다 (이 다이어그램을 보여줍니다), 그 그림에 Ctrl+ F을 누르고 httpcore을 입력하고 버전을 확인하십시오. 버전이 4.4 미만인 경우 종속성이 해결 된 방법을 분석 할 수 있습니다. 이를 바탕으로 pom을 조정하여 종속성을 수정할 수 있습니다. 명령 행에서 mvn으로 작업하고 있기 때문에, 이것은 maven 플러그인을 통한 해당 IDEA 해결 maven 종속성의 잘못된 작동 일 수 있습니다.

+0

'+ - org.apache.httpcomponents : httpclient : jar : 4.5.2 : 컴파일 | + - org.apache.httpcomponents : httpcore : jar : 4.4.4 : tree로부터 컴파일 – nullpointer

+0

이 버전은 호환 가능합니다. 이것은 mvn 의존성의 출력입니까? 트리 또는 IDEA 의존성 다이어그램의 출력입니까? 우리는 mvn 의존성을 사용하여이 문제를 해결할 수 없습니다 : IDEA의 트리 – hunter

+0

은 Ctrl + N을 치고 클래스에 대한 AbstractConnPool 탐색을 입력하면 IDEA가 refleres하는 IDEA가 표시됩니다 ( – hunter