У меня есть источник данных базы данных, который использует Realm. Итак, теперь я хочу протестировать этот класс, но мне приходится сталкиваться с некоторыми проблемами о том, как использовать приборы и как имитировать Realm. Мой источник данных базы данных выглядит следующим образом:Метод тестирования, который использует Realm
public class DatabaseDataSource {
private Realm realm;
public DatabaseDataSource(Realm realm) {
this.realm = realm;
}
public Observable<RealmResults> getContacts(String firstName, String lastName, String city, String zipCode) {
final RealmQuery realmQuery = realm.where(Contact.class);
if(!TextUtils.isEmpty(firstName)) {
realmQuery.contains("firstName", firstName);
}
if(!TextUtils.isEmpty(lastName)) {
realmQuery.contains("lastName", lastName));
}
if(!TextUtils.isEmpty(city)) {
realmQuery.contains("city", city);
}
if(!TextUtils.isEmpty(zipCode)) {
realmQuery.contains("zipCode", zipCode);
}
return realmQuery.findAll()
.asObservable();
}
}
Я использую Robolectrics для других тестов, и, в данном случае, я хочу иметь список контактов в моей издевались области, так что я могу проверить, что фильтрация работает хорошо. Как я могу это сделать? Я пробовал делать:
@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class DatabaseDataSourceTest extends BaseTest {
private DatabaseDataSource databaseDataSource;
Realm realm;
@Before
public void setup() throws Exception {
Realm.init(RuntimeEnvironment.application.getApplicationContext());
Realm.setDefaultConfiguration(new RealmConfiguration.Builder().build());
realm = Realm.getDefaultInstance();
databaseDataSource = new DatabaseDataSource(realm);
}
@Test
public void getContacts_filterByName() {
databaseDataSource.getContacts("testName", null, null, null);
// I don't know what to do here
}
}
Но я получаю следующее исключение при выполнении:
Realm.init(RuntimeEnvironment.application.getApplicationContext());
java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/kc/76n8494x5cd2mtx340f27xch0000gn/T/android-tmp-robolectric409019390257818503/app_lib/librealm-jni.dylib
Как я должен это делать?