-1
我在UIautomator上运行一个简单的测试。我有一个有两种方法的类(一个用于设置环境,另一个用于在设备上执行UI交互。)UIAutomator - 错误 - 调用虚拟方法
而我有另一个类实例化第一个类并调用它们的方法。错误,当我运行代码:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.test.uiautomator.UiObject2.click()' on a null object reference
at com.example.rcorrea.AutoCSP.testCSP(AutoCSP.java:147)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1873)
我的代码:
主类(AutoCSP_new):
package com.example.rcorrea;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.BySelector;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiObject2;
import android.support.test.uiautomator.Until;
import android.test.InstrumentationTestCase;
import java.util.*;
import static java.lang.System.out;
/**
* Created by rcorrea on 10/1/2015.
*/
public class AutoCSP_new extends InstrumentationTestCase {
private UiDevice mDevice;
private AutoCSP_Generica autocsp;
private Vector numeros;
public void test() throws Exception
{
numeros = new Vector (5);
numeros.addElement(new String ("0191234"));
numeros.addElement(new String ("0191234"));
numeros.addElement(new String ("0191234"));
numeros.addElement(new String ("0191234"));
//numeros[0] = "0191234";
//numeros[1] = "0191234567";
// numeros[2] = "01912345678";
//numeros[3] = "019123456789";
autocsp = new AutoCSP_Generica (numeros);
autocsp.setUp();
autocsp.testCSP();
}
}
的类,它的东西:
package com.example.rcorrea;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.BySelector;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiObject2;
import android.support.test.uiautomator.Until;
import android.test.InstrumentationTestCase;
import java.util.*;
import static android.support.test.uiautomator.UiDevice.*;
import static java.lang.System.out;
import java.sql.Time;
/**
* Created by rcorrea on 10/1/2015.
*/
public class AutoCSP_Generica extends InstrumentationTestCase {
private UiDevice mDevice;
//private String[] numeros = new String[10];
private Vector numeros;
public AutoCSP_Generica(Vector num)
{
this.numeros = num;
}
public void setUp() throws Exception {
super.setUp();
mDevice = UiDevice.getInstance(getInstrumentation());
mDevice.pressHome();
mDevice.wait(Until.hasObject(By.text("Telefone")), 10000);
UiObject2 appsButton = mDevice.findObject(By.text("Telefone"));
if (mDevice.findObject(By.text("Telefone")) == null){
mDevice.pressHome();
}
appsButton.click();
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/more_menu")), 3000);
UiObject2 moreButton = mDevice.findObject(By.res("com.android.contacts:id/more_menu"));
moreButton.click();
mDevice.wait(Until.hasObject(By.text("Configurações")), 3000);
mDevice.waitForIdle(10000);
UiObject2 buttonSettings = mDevice.findObject(By.text("Configurações"));
buttonSettings.click();
//assertEquals com.android.systemui:id/mobile.enabled = true;
mDevice.wait(Until.hasObject(By.text("Chamadas")), 3000);
UiObject2 buttonCall = mDevice.findObject(By.text("Chamadas"));
buttonCall.click();
mDevice.wait(Until.hasObject(By.text("Mais configurações")), 5000);
UiObject2 buttonMore = mDevice.findObject(By.text("Mais configurações"));
buttonMore.click();
while (mDevice.hasObject(By.textContains("Lendo")) == true){
mDevice.waitForIdle(5000);
}
mDevice.wait(Until.hasObject(By.text("Números FDN")), 5000);
UiObject2 buttonFDN = mDevice.findObject(By.text("Números FDN"));
buttonFDN.click();
mDevice.waitForIdle(6000);
mDevice.wait(Until.hasObject(By.text("Ativar FDN")), 5000);
UiObject2 buttonOn = mDevice.findObject(By.text("Ativar FDN"));
buttonOn.click();
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.clazz("android.widget.EditText")), 5000);
UiObject2 buttonInsert = mDevice.findObject(By.clazz("android.widget.EditText"));
buttonInsert.setText("1234");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.text("OK")), 5000);
UiObject2 buttonOk = mDevice.findObject(By.text("OK"));
buttonOk.click();
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.text("Lista FDN")), 5000);
UiObject2 buttonList = mDevice.findObject(By.text("Lista FDN"));
buttonList.click();
mDevice.waitForIdle(5000);
//Adicionando o Contato na FDN, 8 Digitos
mDevice.wait(Until.hasObject(By.text("Adicionar")), 5000);
UiObject2 buttonAdd = mDevice.findObject(By.text("Adicionar"));
buttonAdd.click();
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_number")), 7000);
UiObject2 buttonNum = mDevice.findObject(By.res("com.android.phone:id/fdn_number"));
buttonNum.setText("01912345678");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_pin2")), 7000);
UiObject2 buttonPIN = mDevice.findObject(By.res("com.android.phone:id/fdn_pin2"));
buttonPIN.setText("1234");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.text("Salvar")), 7000);
UiObject2 buttonSave = mDevice.findObject(By.text("Salvar"));
buttonSave.click();
mDevice.waitForIdle(5000);
//Adicionando com 9 Digitos.
mDevice.wait(Until.hasObject(By.text("Adicionar")), 5000);
buttonAdd = mDevice.findObject(By.text("Adicionar"));
buttonAdd.click();
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_number")), 7000);
buttonNum = mDevice.findObject(By.res("com.android.phone:id/fdn_number"));
buttonNum.setText("019123456789");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_pin2")), 7000);
buttonPIN = mDevice.findObject(By.res("com.android.phone:id/fdn_pin2"));
buttonPIN.setText("1234");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.text("Salvar")), 7000);
buttonSave = mDevice.findObject(By.text("Salvar"));
buttonSave.click();
mDevice.waitForIdle(5000);
//Adicionando com 8 Digitos e CSP diferente
mDevice.wait(Until.hasObject(By.text("Adicionar")), 5000);
buttonAdd = mDevice.findObject(By.text("Adicionar"));
buttonAdd.click();
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_number")), 7000);
buttonNum = mDevice.findObject(By.res("com.android.phone:id/fdn_number"));
buttonNum.setText("0181912345678");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_pin2")), 7000);
buttonPIN = mDevice.findObject(By.res("com.android.phone:id/fdn_pin2"));
buttonPIN.setText("1234");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.text("Salvar")), 7000);
buttonSave = mDevice.findObject(By.text("Salvar"));
buttonSave.click();
mDevice.waitForIdle(5000);
//Adicionando com CSP diferente e 9 Digitos
mDevice.wait(Until.hasObject(By.text("Adicionar")), 5000);
buttonAdd = mDevice.findObject(By.text("Adicionar"));
buttonAdd.click();
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_number")), 7000);
buttonNum = mDevice.findObject(By.res("com.android.phone:id/fdn_number"));
buttonNum.setText("01819123456789");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.res("com.android.phone:id/fdn_pin2")), 7000);
buttonPIN = mDevice.findObject(By.res("com.android.phone:id/fdn_pin2"));
buttonPIN.setText("1234");
mDevice.waitForIdle(5000);
mDevice.wait(Until.hasObject(By.text("Salvar")), 7000);
buttonSave = mDevice.findObject(By.text("Salvar"));
buttonSave.click();
mDevice.waitForIdle(5000);
mDevice.pressHome();
}
public void testCSP() throws Exception {
//FirstTest 11 Numbers.
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
UiObject2 buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(0).toString());
mDevice.wait(Until.hasObject(By.desc("Chamar")), 10000);
UiObject2 buttonDial = mDevice.findObject(By.desc("Chamar"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
UiObject2 buttonEnd = mDevice.findObject(By.text("Encerrar"));
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
//Second Test 7 Numbers.
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(1).toString());
mDevice.wait(Until.hasObject(By.desc("Chamar")), 10000);
buttonDial = mDevice.findObject(By.desc("Chamar"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
buttonEnd = mDevice.findObject(By.text("Encerrar"));
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
//Third Test 12 Numbers
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(2).toString());
mDevice.wait(Until.hasObject(By.desc("Chamar")), 10000);
buttonDial = mDevice.findObject(By.desc("Chamar"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
buttonEnd = mDevice.findObject(By.text("Encerrar"));
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
//Fourth Test 10 Numbers
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(3).toString());
mDevice.wait(Until.hasObject(By.desc("Chamar")), 10000);
buttonDial = mDevice.findObject(By.desc("Chamar"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
buttonEnd = mDevice.findObject(By.text("Encerrar"));
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
//Starting Videocall protocols.
//FirstTest 11 Numbers.
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(0).toString());
mDevice.wait(Until.hasObject(By.desc("Videochamada")), 10000);
buttonDial = mDevice.findObject(By.desc("Videochamada"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
buttonEnd = mDevice.findObject(By.text("Encerrar"));
mDevice.waitForIdle(10000);
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
//Second Test 7 Numbers.
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(1).toString());
mDevice.wait(Until.hasObject(By.desc("Videochamada")), 10000);
buttonDial = mDevice.findObject(By.desc("Videochamada"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
buttonEnd = mDevice.findObject(By.text("Encerrar"));
mDevice.waitForIdle(10000);
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
//Third Test 12 Numbers
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(2).toString());
mDevice.wait(Until.hasObject(By.desc("Videochamada")), 10000);
buttonDial = mDevice.findObject(By.desc("Videochamada"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
buttonEnd = mDevice.findObject(By.text("Encerrar"));
mDevice.waitForIdle(10000);
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
//Fourth Test 10 Numbers
mDevice.wait(Until.hasObject(By.res("com.android.contacts:id/digits")), 3000);
buttonNumber = mDevice.findObject((By.res("com.android.contacts:id/digits")));
buttonNumber.click();
buttonNumber.setText(numeros.get(3).toString());
mDevice.wait(Until.hasObject(By.desc("Videochamada")), 10000);
buttonDial = mDevice.findObject(By.desc("Videochamada"));
buttonDial.click();
mDevice.wait(Until.hasObject(By.text("Encerrar")), 50000);
buttonEnd = mDevice.findObject(By.text("Encerrar"));
buttonEnd.click();
mDevice.waitForIdle(10000);
mDevice.pressBack();
}
}
你能帮我吗?当我在一个单一的哑类中编码时,一切都运行良好,但是当我将它们分开以重新使用代码时,我得到了这个错误....
根据堆栈跟踪,错误发生在AutoCSP.java的第147行。这是什么?你有猜测哪些引用是空的吗? –
在你的问题中你有太多的代码,所以TLDR,但对于那些因为Uiautomator在测试结束前退出的人来说,请查看这里的答案:http://stackoverflow.com/questions/31377936/the-synchronization-的-uiautomator/31551028#31551028 – gorbysbm