Tag: android testing

在测试期间以编程方式设置genymotion gps会在设置纬度时导致“SecurityException:invalid package name”

测试时,我通过Genymotion设置lat long,如下所示: package com.mypackage.name; public class TestGps extends ActivityInstrumentationTestCase2{ … //setup just calls super.setup(); public void testLocationButton(){ Gps gps = GenymotionManager.getGenymotionManager(getInstrumentation().getContext()).getGps(); gps.setStatus(Gps.Status.ENABLED); gps.setLatitude(40.7127); // the error happens here gps.setLongitude(74.0059); } } 运行时出现以下问题: java.lang.SecurityException: invalid package name: com.mypackage.name at android.os.Parcel.readException(Parcel.java:1546) at android.os.Parcel.readException(Parcel.java:1499) at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:582) at android.location.LocationManager.requestLocationUpdates(LocationManager.java:867) at android.location.LocationManager.requestLocationUpdates(LocationManager.java:490) at com.genymotion.api.Gps.waitForTargetLocation(Gps.java:271) at com.genymotion.api.Gps.setLatitude(Gps.java:134)

控制自动化测试何时结束 – Espresso

我正在测试一个不寻常的情况。 我正在使用Espresso来编写我的测试。 我知道Espresso和InstrumentationTestCase不是为了做到这一点。 我有一个我在其中一个课程中创​​建的监听器,它会通知我某个值的变化。 我在我的测试套件中使用了监听器。 当我从侦听器获取值时,我需要声明值已更改为此类。 我的问题是测试将在我收到监听器的值之前结束。 private void sendSpeedChanges() { setStaticSpeed(new Random().nextInt(10) + 2); try { runTestOnUiThread(new Runnable() { @Override public void run() { consoleActivity.onSpeedChanged(getStaticSpeed(), false); } }); } catch (Throwable throwable) { throwable.printStackTrace(); } } private void createSpeedDelegate() { EspressoMachineValues.setOnSpeedChangeListener(new EspressoMachineValues.OnSpeedChangeListener() { @Override public void onSpeedChanged(double speed) { //assert speed is correct. assertTrue(getStaticSpeed() […]

Handler.handleMessage未在测试中调用,但在应用程序中调用

我有一个在单独进程中运行的服务。 该服务在onCreate()方法中生成一个新线程。 该线程将消息发送回服务。 如果我手动启动应用程序一切正常 – Handler在我的服务中收到消息。 但在我的测试中, handleMessage()方法永远不会被调用。 如何修复我的测试以使handleMessage()方法有效? 谢谢! 服务: public class MyService extends Service { private ServiceHandler mHandler; private final int MSG_HELLO_WORLD = 1; private final String TAG = getClass().getSimpleName(); @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. return null; } @Override public void onCreate() { […]