【问题标题】:"Couldn't contact the RemoteTestNG client" error when trying to run tests尝试运行测试时出现“无法联系 RemoteTestNG 客户端”错误
【发布时间】:2012-11-18 12:32:05
【问题描述】:

问题

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

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

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

如何解决?

我尝试过的事情

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

  • 确保我的课程路径中没有旧版本(自然而然)。
  • 消除 maven 导入的 jar 和 TestNG eclipse 插件使用的 jar 之间可能发生的冲突(两者都是 6.7 版本,并且项目的 pom.xml 确认仅使用自己的依赖 jar)。
  • 在上述更改后执行 maven 更新和构建。
  • 在不同的 JRE(特别是 1.7.0)上运行。

相关信息

环境:

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

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>

【问题讨论】:

  • 你能展示你项目的pom吗?
  • 你能从干净的 Eclipse 工作区再试一次吗?
  • 当然,@CedricBeust,我会试试这个,明天会更新我的发现。
  • 你使用的是testng-6.0.1.jar吗?请更新并再次检查。
  • 我也面临同样的问题。有人知道解决办法吗?

标签: eclipse maven testng


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    -runTestAsTool=true
    

    而不是

    -DrunTestAsTool=true
    

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

    【讨论】:

    • 我的配置很好,请参阅已接受的答案以了解导致此问题的原因(在我的情况下)。 +1,它可能会帮助其他有相同症状的人。
    【解决方案3】:

    此问题源于在 Windows 上运行长 Java 类路径时出现的问题(这些路径超出了进程创建命令限制)。它在 Eclipse 错误跟踪系统上是 reported,也有人讨论过 here on Stackoverflow

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

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

    1. 从上面link下载bug3271933.4.2hack.zip
    2. 备份现有的eclipse/plugins/org.eclipse.jdt.launching_3.4.*.jar
    3. 将补丁中的类复制并粘贴到 org.eclipse.jdt.launching 中的 org/eclipse/jdt/internal/launching JAR(替换现有文件)
    4. 编辑 org.eclipse.jdt.launching JAR 文件中的 META-INF /MANIFEST.MF 文件,删除所有开始 从第一个“NAME:”条目开始。确保留下两 (2) 个换行符 文件末尾的字符。
    5. 重新启动eclipse

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 我看不出这与问题有什么关系
      • 一般来说,在linux上删除hosts中的127.0.0.1 localhost条目会给linux中的一切带来巨大的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多