我正在开发一个Android应用程序,我想知道如何使用GoogleApiClient对一个活动或服务进行单元测试。
例如,在GooglePlayService可用且不可用的情况下,如何测试活动或服务?我正在考虑使用Mockito,但是由于GoogleApiClient是从活动内部实例化的,所以无法模拟它(AFAIK)。
public class MyService extends Service {
...
private GoogleApiClient googleApiClient;
...
@Override
public void onCreate() {
...
googleApiClient = new GoogleApiClient.Builder(this) ... .build();
...
}
...
private void doSomething() {
if(googleApiClient.isConnected) {
...
}
}此外,我还读到不应该嘲笑第三方库,因为如果库被更新了,我的测试套件不会失败,但我如何才能这样做呢?
PS:我肯定这个问题以前有人问过,但我找不到好的关键词:/
发布于 2014-12-18 20:55:16
你需要嘲笑。但是..。
(...)因为GoogleApiClient是从活动内部实例化的
正如您已经看到的,这违背了嘲笑的目的,是一个潜在的改进点。实例化外部服务应该通过工厂 (然后可以很容易地被模拟)或通过依赖注入容器传递给类(这同样可以很容易地被模拟)。
此外,我还读到不应该嘲笑第三方库,因为如果库被更新了,我的测试套件不会失败,但我如何才能这样做呢?
这是相当奇怪的说法。您将(至少应该)进行集成测试,在实际使用第三方库的地方进行更广泛的组件测试。在单元测试中,您可以模拟依赖项(任何依赖项),以便进行隔离测试,并将重点放在单元上。
https://stackoverflow.com/questions/27554112
复制相似问题