我有用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
答案 0 :(得分:0)
如果要从终端模式或批处理模式运行测试,请使用Maven Surefire插件。另外,请确保像这样在pom.xml的build标记内提及测试资源。
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>false</filtering>
</testResource>
</testResources>
</build>
现在,每当必须加载属性文件时,都可以使用某种InputStream进行加载。或者只是使用File类。
InputStream is = getClass().getResourceAsStream("/object.properties");
以上内容的作用是,在构建期间,maven知道从何处选择资源文件。而且,由于您已经在pom中提到了资源,因此可以直接使用classpath获取文件,而无需直接使用文件系统。
答案 1 :(得分:0)
@ SteroidKing666非常感谢您的指导。 您怀疑这是由于番石榴的多个版本冲突造成的,我有17.0和21.0
我删除了17.0并保留了21.0版本,然后才可以使用。