Играть!+ Сиена + GAE + Юнит - PullRequest
3 голосов
/ 21 июля 2010

Я пытаюсь запустить некоторые базовые юнит-тесты в Play! фреймворк, использующий постоянную библиотеку Siena с GAE в качестве предполагаемой цели развертывания.

Я правильно настроил проект и могу развернуть приложение в GAE. Я создал базовый объект домена:

public class User extends Model {

    @Id(Generator.AUTO_INCREMENT)
    public Long id;

    @Column("first_name")
    public String firstName;

    @Column("last_name")
    public String lastName;

    @Column("email")
    public String email;

    public User(String firstName, String lastName, String email) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
    }

    public static Query<User> all() {
        return Model.all(User.class);
    }

}

и базовый юнит-тест:

public class BasicTest extends UnitTest {

    @Before
    public void setup() {
        Fixtures.deleteAll();
    }


    @Test
    public void canCreateUser() {
        new User("Jason","Miesionczek","atmospherian@gmail.com").insert();

        User user = User.all().fetch().get(0);

        assertNotNull(user);
        assertEquals(1,User.all().count());
    }

}

Я понимаю, что в Play! 1.0.3, Поддержка Fixtures для Сиены еще не существует, что должно быть исправлено в 1.1, но в то же время, что я должен использовать вместо Fixtures.deleteAll (), чтобы очистить базу данных перед каждым тестом?

В настоящее время мое второе утверждение не выполняется, поскольку база данных сохраняет ранее вставленные записи.

Ответы [ 2 ]

2 голосов
/ 11 декабря 2010

Не знаю, поздно ли уже, но я добавил некоторую поддержку Fixture для Сиены (протестировано с игрой 1.1, gae 1.4, siena 1.3, crudsiena 1.2).

Он поддерживает deleteAll()и load():

SienaFixture.java http://pastie.org/1367878

Я довольно новичок в игре и в Сиене (1 неделя), так что, вероятно, есть лучший способ сделатьэто (особенно deleteAll()).

2 голосов
/ 19 августа 2010

Вам нужно будет сделать удаление для каждой таблицы. Например:

Model.all(User.class).delete();
...