-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