【问题标题】:Test fails due to objectproperties file can't be found由于找不到 objectproperties 文件,测试失败
【发布时间】:2018-08-08 09:40:39
【问题描述】:

我有用 Selenium、Appium 和 TestNG 编写的移动自动化测试用例。

从 Eclipse 运行时调用测试用例工作正常,但是当我通过调用 testng.xml 运行批处理脚本时,测试失败,因为它找不到对象属性文件。

并因以下错误堆栈而失败

java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet()Ljava/util/stream/Collector;
    at org.openqa.selenium.remote.ProtocolHandshake.streamW3CProtocolParameters(ProtocolHandshake.java:284)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:149)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:174)
    at com.xyz.xya.LeadTest.Launchapplication(RetailKeywords.java:47)
    at com.xyz.xya.LeadTest.readData(RetailExecuteLead.java:111)
    Suppressed: java.io.IOException: Incomplete document
        at com.google.gson.stream.JsonWriter.close(JsonWriter.java:527)
        at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:167)
        ... 35 more
... Removed 27 stack 

【问题讨论】:

  • 用您的代码试验错误堆栈跟踪更新问题

标签: selenium batch-file testng


【解决方案1】:

如果您依赖于从终端模式或批处理模式运行测试,请使用 Maven Surefire 插件。另外,请确保您在 pom.xml 的构建标记中提及您的测试资源,就像这样。

<build>
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <filtering>false</filtering>
    </testResource>
  </testResources>
</build>

现在,当您必须加载属性文件时,请使用某种类型的 InputStream。或者只是使用 File 类。

InputStream is = getClass().getResourceAsStream("/object.properties");

上述内容的作用是,在构建过程中,maven 知道从哪里选择资源文件。而且由于您在 pom 中提到了资源,因此您可以直接使用类路径获取文件,而无需直接使用文件系统。

【讨论】:

  • 该项目没有使用任何maven/ant./gradle。这是一个简单的 java 项目,带有 TestNG 和其他必要的库文件
  • 我可以放目录结构、批处理脚本和testng文件,但不能放源代码@DebanjanB。项目名称
  • 使用属性文件的绝对路径。似乎相对路径不起作用。请检查绝对路径并报告。
  • D:\Projectname -settings -bin -lib -test-output -testng.xml --src -com -org -retailpos -constants -RetailConstants.java -retailobjectrepository -RetailObjectReposiyory.properties -retailtestcases - RetailTestData.xlxs -retailstestscript -Performance.java -RetailExecuteLead.java -RetailKeywords.java -test.bat
  • 你可能有多个 Guava 相关的 jar 文件。我建议您检查并将其归结为单个 Guava 文件。我不确定,但它似乎是由多个 jar 引起的冲突。
【解决方案2】:

@SteroidKing666 非常感谢您的指导。 正如您所怀疑的那样,这是由于我拥有 17.0 和 21.0 的多个版本的番石榴的冲突

我删除了 17.0 并保留了 21.0 版本,然后瞧,它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多