Org.testng.TestNGException while trying to access PoolingHttpClientConnectionManager

So, I recently started running into TestNGException , trying to run our existing test suite using the IDE. Lately, I mean updating intelliJ and dependencies to try working with the latest versions. The code and stack trace for failure are as follows:

Code usage

ITests.java -

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

BaseTest (just for syntax sharing) -

 public class BaseTest { // where in this class does not use any instance of Http } 

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(); } } 

Maven Dependency -

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

Stacktrace -

 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 

Note Our project is based on maven, so while I am running tests using maven exec:java , execution is fine.

Please request any other information.

Change 1 -

As @hunter asked, debugging to get the exact Cpool path from where it was downloaded. Rated -

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

Result -

File: /Users/xyz/.m2/repository/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar/org/apache/http/impl/conn/CPool.class

Change 2 -

mvn dependency:tree [most related to httpcomponents] -

--- maven-dependency-plugin: 2.8: tree

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: Test: jar: 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: driver: jar: 1.1.3

 \- com.package:test:jar:1.1.3:compile 

Edit 3 - intelliJ IDEA - 15.0.3 [Community] - updated January 19, 2016

Change 4 -

Bending more for intelliJ, messaging logs running tests using testng.xml -> right click -> run

 > 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. > [ AppClassLoader@14dad5dc ] 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] [ AppClassLoader@14dad5dc ] 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] [ AppClassLoader@14dad5dc ] 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] [ AppClassLoader@14dad5dc ] 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] 
+6
source share
1 answer

In IDEA, the Maven project tab, click the Show Dependencies button (it will show a diagram), then press Ctrl+ F on this diagram and enter httpcore and check the version. if it shows a version less than 4.4, you can analyze how the dependencies were resolved. Based on this, you can configure pom to fix dependencies. Since it works with mvn on the command line, this may be the wrong behavior of IDEA-dependent maven permissions through its maven plugin.

+2
source

All Articles