机器人和服务测试

时间:2013-04-12 16:14:44

标签: android android-service robotium android-testing

我有一个使用#startService绑定到服务的应用程序。该服务是使用AIDL定义的远程服务。

我想编写一个Robotium 4.x测试,该测试绑定到“Mock”服务,该服务提供一些测试数据,以便我可以控制服务提供哪些数据。我不太了解设置这样的场景。

我的第一次尝试是调用我的ActivityInstrumentationTestCase2启动的Activity上的一些方法,并在ServiceConnection中简单传递,并手动调用#onServiceConnected来模拟来自系统的回调。

 activity.setConnection(new FakeServiceConnection());

这总是导致

 Instrumentation run failed due to 'java.lang.IllegalArgumentException'

因为似乎Android Runtime已经以某种方式看到了ServiceConnection。

我读到了RenamingDelegateContext和IsolatedContext,但我不知道如何在调用运行时#startService时控制或设置服务上的创建。

文档说我可能必须覆盖相应的方法。

public class ServiceRenamingContext extends RenamingDelegatingContext {

    @Override
    public ComponentName startService(Intent service) {
        throw new UnsupportedOperationException("I got called!!!!");
        // return super.startService(service);
    }

    @Override
    public boolean stopService(Intent name) {
        throw new UnsupportedOperationException("I got called!!!!");
        // return super.stopService(name);
    }

    public ServiceRenamingContext(Context context, String filePrefix) {
        super(context, filePrefix);

    }

    @Override
    public boolean bindService(Intent service, ServiceConnection conn, int flags) {

        throw new UnsupportedOperationException("I got called!!!!");

        // return super.bindService(service, conn, flags);
    }
}

如您所见,这只是抛出某种异常,看它是否被运行时调用。但没有任何反应。

任何暗示如何设置这一点非常感谢。

我想我不知道如何使用ActivityInstrumentationTestCase2设置像我这样的特殊上下文。

欢呼声

0 个答案:

没有答案