5

问题

在 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
  • 测试NG: 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>
4

4 回答 4

2

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

-runTestAsTool=true

代替

-DrunTestAsTool=true

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

于 2014-03-05T21:33:16.483 回答
1

此问题源于在 Windows 上运行长 Java 类路径时发生的问题(这些超出了进程创建命令限制)。它已在 Eclipse 错误跟踪系统上进行了报告,并且在 Stackoverflow 上也进行讨论

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

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

  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. 重新启动日食
于 2013-01-12T17:59:33.660 回答
1

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

于 2015-04-01T09:43:25.963 回答
0

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

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

于 2014-02-06T08:13:59.200 回答