eclipse 尝试运行测试时出现“无法联系 RemoteTestNG 客户端”错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13440099/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 19:25:42  来源:igfitidea点击:

"Couldn't contact the RemoteTestNG client" error when trying to run tests

eclipsemaventestng

提问by Eliran Malka

Issue

问题

Working with TestNG on a maven managed project, i can't seem to run tests via the TestNG eclipse plugin. When trying to run tests, the following error message pops up (inside a dialog window):

在 Maven 管理的项目上使用 TestNG,我似乎无法通过 TestNG eclipse 插件运行测试。尝试运行测试时,会弹出以下错误消息(在对话窗口内):

Couldn't contact the RemoteTestNG client. Make sure you don't have an older version of testng.jar on your class path.

Reason:
Timeout while trying to contact RemoteTestNG.

无法联系 RemoteTestNG 客户端。确保您的类路径上没有旧版本的 testng.jar。

原因:
尝试联系 RemoteTestNG 时超时。

How to resolve this?

如何解决这个问题?

Things I have tried

我尝试过的事情

(After asking allmy peers at the office QA department on this, and looking up information via the common search engines and on TestNG forums)

(在询问了办公室 QA 部门的所有同事,并通过常用搜索引擎和 TestNG 论坛查找信息后)

  • Making sure I don't have an older version on my class path (naturally).
  • Eliminating possible collisions between maven imported jars and jars used by the TestNG eclipse plugin (both are of version 6.7, and the project's pom.xmlconfirmed to use only its own dependent jar).
  • Performing maven update and build after said changes.
  • Running on a different JRE (specifically 1.7.0).
  • 确保我的课程路径上没有旧版本(自然)。
  • 消除 maven 导入的 jars 和 TestNG eclipse 插件使用的 jars 之间可能的冲突(两者都是 6.7 版,并且该项目已pom.xml确认仅使用其自己的依赖 jar)。
  • 在上述更改后执行 Maven 更新和构建。
  • 在不同的 JRE(特别是 1.7.0)上运行。

Relevant information

相关信息

Environment:

环境:

  • OS:Win XP pro SP3
  • JRE:1.6.0 update 31
  • TestNG:6.7
  • Maven:3.0.3
  • IDE:Eclipse Juno Java EE SR1
  • 操作系统:Win XP pro SP3
  • JRE:1.6.0 更新 31
  • 测试NG:6.7
  • Maven:3.0.3
  • IDE:Eclipse Juno Java EE SR1

pom.xmlcontent:

pom.xml内容:

<?xml version="1.0" encoding="UTF-8" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>SGTest</artifactId>
    <name>SGTest</name>
    <description>Service Grid Test project for XAP</description>

    <parent>
        <groupId>com.my_product.quality.sgtest</groupId>
        <artifactId>SGTest-parent</artifactId>
        <version>3.0.0</version>
        <relativePath>http://mvn-srv:8081/artifactory/libs-snapshot-local/com/my_product/quality/sgtest/SGTest-parent/3.0.0/SGTest-parent-3.0.0.pom</relativePath>
    </parent>

    <properties>
        <xap.home>${env.XAP_LATEST}</xap.home>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.my_product</groupId>
            <artifactId>my_opensource_product</artifactId>
            <version>${gsVersion}</version>
            <scope>system</scope>
            <systemPath>${xap.home}/lib/required/my_opensource_product.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.my_product</groupId>
            <artifactId>gs-runtime</artifactId>
            <version>${gsVersion}</version>
            <scope>system</scope>
            <systemPath>${xap.home}/lib/required/gs-runtime.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.my_product.quality</groupId>
            <artifactId>DashboardReporter</artifactId>
            <version>0.0.1</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>apps</artifactId>
            <version>${project.version}</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>com.my_product.quality</groupId>
            <artifactId>webuitf</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.my_product.quality</groupId>
            <artifactId>wanem</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.my_opensource_product.xenserver</groupId>
            <artifactId>xenserver-machine-provisioning</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.swift.common</groupId>
            <artifactId>confluence-soap</artifactId>
            <version>0.5</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-jsch</artifactId>
            <version>1.8.3</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </dependency>
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.2</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>1.8.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-vfs2</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.hyperic</groupId>
            <artifactId>sigar</artifactId>
            <version>1.6.5</version>
            <scope>system</scope>
            <systemPath>${xap.home}/lib/platform/sigar/sigar.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>1.8.0.10</version>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-all</artifactId>
            <version>1.3</version>
        </dependency>
    </dependencies>

    <build>
        <testSourceDirectory>src/main/java</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <classpathDependencyExcludes>
                        <classpathDependencyExcludes>com.my_product.quality.sgtest.apps.security:processor</classpathDependencyExcludes>
                        <classpathDependencyExcludes>com.my_product.quality.sgtest.apps.archives:customSecurityProcessor</classpathDependencyExcludes>
                        <classpathDependencyScopeExclude>runtime</classpathDependencyScopeExclude>
                    </classpathDependencyExcludes>
                    <argLine>-Xmx2048m -XX:MaxPermSize=512m</argLine>
                    <includes>
                        <include>${includes}</include>
                    </includes>
                    <excludes>
                        <exclude>${excludes}</exclude>
                    </excludes>
                    <disableXmlReport>true</disableXmlReport>
                    <reportsDirectory>${sgtest.summary.dir}</reportsDirectory>
                    <reportFormat>xml</reportFormat>
                    <properties>
                        <property>
                            <name>configfailurepolicy</name>
                            <value>continue</value>
                        </property>
                        <property>
                            <name>suitename</name>
                            <value>${sgtest.suiteName}${sgtest.suiteId}</value>
                        </property>
                        <property>
                            <name>testname</name>
                            <value>${sgtest.suiteName}${sgtest.suiteId}</value>
                        </property>
                        <property>
                            <name>outputDir</name>
                            <value>${sgtest.summary.dir}</value>
                        </property>
                        <property>
                            <name>listener</name>
                            <value>framework.testng.SGTestNGListener,framework.testng.SGTestNgSuiteSplitter,framework.testng.report.TestNgReporterImpl</value>
                        </property>
                    </properties>
                    <systemProperties>
                        <sgtest.suiteId>${sgtest.suiteId}</sgtest.suiteId>
                        <sgtest.numOfSuites>${sgtest.numOfSuites}</sgtest.numOfSuites>
                        <selenium.browser>${selenium.browser}</selenium.browser>
                        <org.apache.commons.logging.Log>org.apache.commons.logging.impl.Jdk14Logger</org.apache.commons.logging.Log>
                        <com.gs.logging.level.config>true</com.gs.logging.level.config>
                        <java.util.logging.config.file>${basedir}/logging/sgtest_logging.properties</java.util.logging.config.file>
                        <sgtest.buildFolder>${sgtest.buildFolder}</sgtest.buildFolder>
                        <sgtest.url>http://192.168.9.121:8087/sgtest3.0-xap/</sgtest.url>
                        <sgtest.disconnect.machines>${sgtest.disconnect.machines}</sgtest.disconnect.machines>
                        <com.gs.work>${com.gs.work}</com.gs.work>
                        <com.gs.deploy>${com.gs.deploy}"</com.gs.deploy>
                        <cppOS>${cppOS}</cppOS>
                    </systemProperties>
                    <testFailureIgnore>true</testFailureIgnore>
                    <detail>true</detail>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

采纳答案by Eliran Malka

This issue originates from a problem which occurs when running long Java classpaths on Windows (these exceed the process creation command limit). It had been reportedon the Eclipse bug tracking system, and was also discussed here on Stackoverflow.

此问题源于在 Windows 上运行长 Java 类路径(这些超过进程创建命令限制)时出现的问题。它已被报道Eclipse的bug跟踪系统,并进行了讨论这里#2

To work around this on Eclipse Juno releases, we can either bypass the command limit (using the solutions suggested in the above linked post), or apply the patch from the reported bug.

要在 Eclipse Juno 版本上解决此问题,我们可以绕过命令限制(使用上述链接帖子中建议的解决方案),或者应用报告错误中的补丁。

Ivan Simposted the patching instructions on his coderwall, but I'll include an excerpt for the sake of completeness:

Ivan Sim在他的 coderwall 上发布了补丁说明,但为了完整起见,我将摘录一段:

  1. Download bug3271933.4.2hack.zip from the above link
  2. Back up existing eclipse/plugins/org.eclipse.jdt.launching_3.4.*.jar
  3. Copy and paste classes in the patch to org/eclipse/jdt/internal/launching in your org.eclipse.jdt.launching JAR (replace existing files)
  4. Edit the META-INF /MANIFEST.MF file in your org.eclipse.jdt.launching JAR file by removing everything starting from the first "NAME:" entry. Make sure you leave two (2) line break characters at the end of the file.
  5. Re-start eclipse
  1. 从上面的链接下载 bug3271933.4.2hack.zip
  2. 备份现有的 eclipse/plugins/org.eclipse.jdt.launching_3.4.*.jar
  3. 将补丁中的类复制并粘贴到 org.eclipse.jdt.launching JAR 中的 org/eclipse/jdt/internal/launching(替换现有文件)
  4. 通过删除从第一个“NAME:”条目开始的所有内容,编辑 org.eclipse.jdt.launching JAR 文件中的 META-INF /MANIFEST.MF 文件。确保在文件末尾留下两 (2) 个换行符。
  5. 重新开始日食

回答by mcginty8

I was able to make the exact problem occur by configuring my TestNG launch configuration (within eclipse) incorrectly. Specifically I specified for it to pass the following as a JVM argument:

通过错误地配置我的 TestNG 启动配置(在 eclipse 中),我能够使确切的问题发生。具体来说,我指定它传递以下内容作为 JVM 参数:

-runTestAsTool=true

instead of

代替

-DrunTestAsTool=true

Adding the missing Dfixed it for me. So maybe double-check how your launch configuration is configured.

添加缺少的D为我修复了它。因此,也许请仔细检查您的启动配置是如何配置的。

回答by Hui Hu

Please make sure the Sock5 proxy on your Mac OS or Windows is turned off.

请确保 Mac OS 或 Windows 上的 Sock5 代理已关闭。

回答by amit.bhayani

It seems TestNG tries to connect to JVM instance via creating socket to 'localhost' and in my /etc/hosts (I use linux) file I renamed localhost to something else so it bombed.

似乎TestNG试图通过创建到'localhost'的套接字连接到JVM实例,在我的/etc/hosts(我使用linux)文件中,我将localhost重命名为其他东西,所以它被炸了。

Changed back to localhost and all is good.

改回本地主机,一切都很好。