Java 阿皮姆、爪哇及加拿大;Testng-查找NullPointerException的原因
在Appium和emulator启动之前,我得到了一个Java 阿皮姆、爪哇及加拿大;Testng-查找NullPointerException的原因,java,nullpointerexception,appium,driver,Java,Nullpointerexception,Appium,Driver,在Appium和emulator启动之前,我得到了一个NullPointerException。因此,试图通过在代码中包含sysout行来进行调试是毫无帮助的。 如果有人有什么建议,请通过发送,因为我快疯了 我的依赖项: <dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <artif
NullPointerException
。因此,试图通过在代码中包含sysout
行来进行调试是毫无帮助的。
如果有人有什么建议,请通过发送,因为我快疯了
我的依赖项:
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0-beta3</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
我的testng.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Android Parallel Execution" parallel="tests" thread-count="2" verbose="7">
<test name="Device1">
<parameter name="platformVersion" value="9.0"/>
<parameter name="emulatorNumber" value="emulator-5554"/>
<parameter name="deviceName" value="Android9_Nexus"/>
<parameter name="port" value="4723"/>
<classes>
<class name="MA.steps.TestRunner"/>
</classes>
</test>
</suite>
这是我第一次在测试中调用
驱动程序
,但让我困惑的是,它甚至没有启动appium或启动模拟器就抛出了nullpointerexception
。问题在于测试代码
您创建了一个套件xml文件,仅包含TestRunner
类。但是整个appium实例化逻辑都被困在Hooks
类中,该类通过TestNG配置注释@BeforeTest
和@AfterTest
完成。但是这个类既不包括在您的套件中,您的测试类(TestRunner
)也不扩展它。因此,您的配置不会被调用,从而导致AppiumDriver
对象的值为空
要解决此问题,可以执行以下操作之一:
Hooks
类(或)IInvokedMethodListener
,并在调用之前将驱动程序实例化移动到其中
你能试着像下面那样初始化你的驱动程序吗?driver=newandroiddriver(新URL(“:”+port+“/wd/hub”),大写);您能提供myAccountOverviewScreen.java的实现吗?提前感谢感谢您的建议!我在xml文件中包含了钩子,它解决了模拟器没有被实例化的问题。但是,驱动程序仍然会导致问题,因为我的应用程序加载到模拟器上,但仍然会在调用驱动程序的第一段代码上抛出nullpointerexception。您是否知道发生这种情况的原因?驱动程序在到达测试代码之前是正常的,然后变为null。
package MA.steps;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
@CucumberOptions(
plugin = {"pretty", "html:target/cucumber-reports"}
, monochrome = true
, features = "src/test/java/feature"
, tags = "@Login"
)
public class TestRunner extends AbstractTestNGCucumberTests {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Android Parallel Execution" parallel="tests" thread-count="2" verbose="7">
<test name="Device1">
<parameter name="platformVersion" value="9.0"/>
<parameter name="emulatorNumber" value="emulator-5554"/>
<parameter name="deviceName" value="Android9_Nexus"/>
<parameter name="port" value="4723"/>
<classes>
<class name="MA.steps.TestRunner"/>
</classes>
</test>
</suite>
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);