如果testDb()
在测试包中,则测试(Line
)运行正常。
知道如何解决这个问题吗?
我甚至无法开始思考这里可能出现的问题......真是令人费解。
以下是代码:
package im.db_real;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.test.InstrumentationTestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import im.persistence.Line;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import io.realm.RealmResults;
@RunWith(AndroidJUnit4.class)
public class DBTest extends InstrumentationTestCase {
static private String safeToString(Object o) {
if (o != null) return o.toString(); //+Test.getS();
else return "null object "; //+Test.getS();
}
static public Realm initRealm(android.content.Context context) {
RealmConfiguration realmConfig = new RealmConfiguration.Builder(context).
deleteRealmIfMigrationNeeded().
build();
Realm.deleteRealm(realmConfig);
Realm.setDefaultConfiguration(realmConfig);
Realm realm = Realm.getDefaultInstance();
return realm;
}
static public void deleteAllData(Realm r) {
System.out.print("Deleting data...");
r.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.deleteAll();
}
});
}
static public void createLines(Realm r) {
r.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm r) {
Line l1 = r.createObject(Line.class);
l1.setTxt("line 1");
Line l2 = r.createObject(Line.class);
l2.setTxt("line 2");
}
});
}
static public void createLineList(Realm r){
r.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm r) {
LineList ll = r.createObject(LineList.class);
ll.setName("line list 1");
}
});
}
static public Line getLine(Realm r, int i){
RealmResults<Line> lines = r.where(Line.class).findAll();
return lines.get(i);
}
static public void addLineToList(Realm r, final Line l, final LineList ll){
r.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm r) {
ll.getLines().add(l);
}
});
}
static public LineList getFirstLineList(Realm r){
return r.where(LineList.class).findFirst();
}
@Test
public void testDB() {
Context c = InstrumentationRegistry.getTargetContext();
Realm r1=initRealm(c);
createLines(r1);
createLineList(r1);
r1.close();
Realm r2=initRealm(c);
Line l1=getLine(r2,0);
Line l2=getLine(r2,1);
LineList ll=getFirstLineList(r2);
addLineToList(r2,l1,ll);
r2.close();
// assertEquals(1,2);
}
}
package im.persistence;
import io.realm.RealmObject;
public class Line extends RealmObject {
public String getTxt() {
return txt;
}
public void setTxt(String txt) {
this.txt = txt;
}
public String txt;
}
package im.db_real;
import im.persistence.Line;
import io.realm.RealmList;
import io.realm.RealmObject;
public class LineList extends RealmObject{
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String name;
public RealmList<Line> getLines() {
return lines;
}
public void setLines(RealmList<Line> lines) {
this.lines = lines;
}
public RealmList<Line> lines;
}
编辑:
Gradle的日志部分在这里:
17:53:39.691 [ERROR] [system.err] Note: Processing class Cat
17:53:39.697 [ERROR] [system.err] Note: Processing class Dog
17:53:39.698 [ERROR] [system.err] Note: Processing class Person
17:53:39.698 [ERROR] [system.err] Note: Creating DefaultRealmModule