【问题标题】:Play! + Siena + GAE + JUnit玩! + 锡耶纳 + GAE + JUnit
【发布时间】:2010-07-21 12:46:40
【问题描述】:

我正在尝试在 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,尚不存在对 Siena 的 Fixtures 支持,应该在 1.1 中修复,但与此同时,我应该使用什么来代替 Fixtures.deleteAll() 在每次测试之前清除测试数据库?

现在我的第二个断言失败了,因为数据库保留了之前插入的记录。

【问题讨论】:

    标签: java google-app-engine junit playframework siena


    【解决方案1】:

    您需要对每个表执行删除操作。例如:

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

    【讨论】:

      【解决方案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())。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2011-10-15
        • 2015-10-14
        • 2016-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多