Sucre ORM juste de ne pas créer des tables

Je suis en train de travailler sur une bibliothèque autonome projet qui nécessite la persistance d'un modèle simple. Voici ce que ma SugarRecord ressemble:

/**
 *  Keeping track of previously received messages by ID
 */

public class MessageRequestIdModel extends SugarRecord {

    protected String messageRequestId;

    public MessageRequestIdModel() {

    }

    public MessageRequestIdModel(String messageRequestId) {
        this.messageRequestId = messageRequestId;
    }

    public String getMessageRequestId() {
        return this.messageRequestId;
    }

    public static boolean exists(String id) {
        return MessageRequestIdModel.find(
                MessageRequestIdModel.class,
                "messageRequestId = ?",
                id
        ).size() != 0;
    }
}

Dans un référentiel de la classe, je tente de persister par l'appel de cette méthode:

@Override
public void save(MessageRequestId messageRequestId) {
    new MessageRequestIdModel(messageRequestId.getId()).save();
}

J'ai essayer de tester cela en utilisant un android.test.InstrumentationTestCase où je passe une Context à Sucre comme suit:

SugarContext.init(getInstrumentation().getContext());

Présente les résultats de cette erreur lorsque je lance le test:
(troncature à garder cette question, un bref lire)

android.database.sqlite.SQLiteException: no such table: MESSAGE_REQUEST_ID_MODEL (code 1): , while compiling: INSERT or REPLACE...

Dépannage, j'ai déjà tenté:

  • En gardant un autre Manifeste pour le package de test à passer le .test nom du paquet à SugarORM. Pas de changement dans le comportement
  • L'ajout d'un MessageRequestIdModel.findById(MessageRequestIdModel.class, (long) 1); comme dans les autres postes. Les changements d'erreur à lui-même (Montrant full stack-trace ici au cas où ça aide):

    android.database.sqlite.SQLiteException: no such table: MESSAGE_REQUEST_ID_MODEL (code 1): , while compiling: SELECT * FROM MESSAGE_REQUEST_ID_MODEL WHERE id=? LIMIT 1
    
    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1163)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1240)
    at com.orm.SugarRecord.find(SugarRecord.java:192)
    at com.orm.SugarRecord.findById(SugarRecord.java:102)
    at pm.tin.apprise.entities.message_request_ids.MessageRequestIdModelRepository.save(MessageRequestIdModelRepository.java:19)
  • J'ai essayé de l'enlever tout le Sucre ORM config à partir de la Manifester comme suggéré par de nombreux - cela ne change rien

  • J'ai essayé de créer un Exemple d'Application du module et essayé de courir comme un test pour l'application, dans le cas d'applications Autonomes n'ai pas le droit de ressources sur l'émulateur/appareil (je l'ai testé sur les deux)

  • J'ai essayé de l'incrémentation de la VERSION nombre de la base de données

  • J'ai essayé de basculer vers une ActivityTestCase et à l'aide de getActivity().getApplicationContext(). Essentiellement, cela échoue avec un message d'erreur qui indique que ce Contexte est incomplète pour être en mesure de configurer SQLite

Comme vous pouvez le voir, j'ai poussé fort sur un rocher tout au long de la nuit, mais à ce point c'est semblant de Sisyphe et je n'ai absolument pas de plomb pour ma prochaine tentative de débogage autres que d'utiliser un ORM que le Sucre (qui ne semble pas vraiment être le problème). Il n'y a rien de plus emasculating que n'étant pas en mesure d'exécuter SQLite dans un Cas de Test et je pleure à la Saint-Programmeur Conscience en vous pour vous aider :-'(

  • Quelle version d'Android Studio utilisais-tu? Elle peut être liée à la problème suivant
  • semble que c'est très bien oui!
  • Ensuite, je vais l'ajouter en tant qu'une réponse 🙂
  • Je suis cependant sur Gradle 1.5.0 🙁 Il certainement peut aider quelqu'un si oui - suivra cette question, et si cela résout-il le commutateur accepté de répondre!
InformationsquelleAutor Angad | 2016-03-03