使用Robolectric创建GoogleApiClient阴影

时间:2015-09-18 16:48:28

标签: java android unit-testing robolectric

我正在使用Robolectric并尝试创建GoogleApiClient的Shadow对象,但未成功。从不调用Shadow类中的方法。 GoogleApiClient是界面 - 这可能是个问题吗?有没有办法如何“遮蔽”GoogleApiClient界面(或在测试中模拟GoogleApiClient)?

实施:

@Implements(GoogleApiClient.class)
public class ShadowGoogleApiClient {

public void __constructor__ (){
    System.out.println("__constructor____constructor__");
}

@Implementation
void connect() {
    System.out.println("connectconnectconnect");
}

@Implementation
boolean isConnected() {
    System.out.println("isConnectedisConnected");
    return false;
}

@Implementation
boolean isConnecting() {
    System.out.println("isConnectingisConnecting");
    return false;
}

}

我在测试中定义了Shadow类:

@Config(shadows = {ShadowGoogleApiClient.class},
    constants = BuildConfig.class)
@RunWith(CustomRobolectricRunner.class)
public class ApiTest {
 ...
}

1 个答案:

答案 0 :(得分:0)

您是否曾尝试使用Mockito来模拟GoogleApiClient的实现?

insert_data = []

with open('data.txt') as f:
    state = 'HEADER'
    headers = []
    for line in f.readlines():
        if state == 'HEADER':
            headers = [header.lower().strip().replace(' ', '_') for header in line.split('|')]
            state = 'IGNORE'
        elif state == 'IGNORE':
            state = 'DATA'
        elif state == 'DATA':
            data_values = map(str.strip, line.split('|'))
            insert_entry = {}
            for key, data in zip(headers, data_values):
                insert_entry[key] = data
            insert_data.append(insert_entry)

for row in insert_data:
    form = PersonForm(row)

    if form.is_valid():
        form.save()
    else:
        print form.errors()