3

Playでいくつかの基本的なユニットテストを起動して実行しようとしています!意図されたデプロイメントターゲットとしてGAEを備えたSiena永続性ライブラリを使用するフレームワーク。

プロジェクトを適切に構成し、アプリを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、SienaのFixturesサポートはまだありません。これは1.1で修正されるはずですが、それまでの間、Fixtures.deleteAll()の代わりに、各テストの前にテストデータベースをクリアするために何を使用する必要がありますか?

データベースが以前に挿入されたレコードを保持しているため、現在、2番目のアサーションは失敗します。

4

2 に答える 2

2

テーブルごとに削除を行う必要があります。例えば:

Model.all(User.class).delete();
于 2010-08-19T18:21:16.060 に答える
2

すでに遅れているかどうかはわかりませんが、SienaのFixtureサポートを追加しました(play 1.1、gae 1.4、siena 1.3、crudsiena 1.2でテスト済み)。

それはサポートしdeleteAll()load()

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

私はプレイとシエナ(1週間)にかなり慣れていないので、おそらくそれを行うためのより良い方法があります(特にdeleteAll())。

于 2010-12-11T14:44:32.833 に答える