Próbując badanej jednostki klasy, która ma kilka połączeń do Realm (0.87.4), setup test nie powiedzie się zRealm Test jednostki na Androida
java.lang.NoClassDefFoundError: rx/Observable$OnSubscribe
at io.realm.RealmConfiguration$Builder.<init>(RealmConfiguration.java:279)
at org.testapp.db.MyClassTest.setUp(MyClassTest.java:34)
...
Caused by: java.lang.ClassNotFoundException: rx.Observable$OnSubscribe
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
Moja klasa Test rozpoczyna się:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest extends TestCase {
@Rule
public TemporaryFolder testFolder = new TemporaryFolder();
Realm realm;
@Before
public void setUp() throws Exception {
File tempFolder = testFolder.newFolder("realmdata");
RealmConfiguration config = new RealmConfiguration.Builder(tempFolder).build();
realm = Realm.getInstance(config);
}
...
Moje gradle ma:
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.10.19"
testCompile "org.robolectric:robolectric:3.0"
compile 'io.realm:realm-android:0.87.4'
Jak rozwiązać ten problem?
=== EDIT 1 ===
dodałem do mojego Gradle:
testCompile 'io.reactivex:rxjava:1.1.0'
i
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
nowy błąd jest
java.lang.UnsatisfiedLinkError: no realm-jni in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at io.realm.internal.RealmCore.loadLibrary(RealmCore.java:117)
Tak, jedynym sposobem jest skorzystanie z Android InstrumentTest, dziękuję za odpowiedź, a ja po prostu chcę dostarczyć więcej informacji na temat uruchamiania testów jednostkowych za pomocą Robolectric and Realm, proszę kliknąć ten link: https://realm.io/docs/java/ ostatnie/# robolectric – TranVo