class im.persistence.Line不是此Realm架构的一部分 - 在进行仪器测试时

时间:2016-08-03 20:07:28

标签: android realm

如果testDb()在测试包中,则测试(Line)运行正常。 enter image description here

但是,如果我将Line移动到生产包,则测试会因异常而失败。 enter image description here

知道如何解决这个问题吗?

我甚至无法开始思考这里可能出现的问题......真是令人费解。

以下是代码:

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

0 个答案:

没有答案