2010-07-21 68 views
3

我正試圖在Play上運行一些基本的單元測試!框架使用帶GAE的Siena持久性庫作爲預期的部署目標。玩! + Siena + GAE + JUnit

我已經正確配置了項目並可以將應用程序部署到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","[email protected]").insert(); 

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

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

} 

據我所知,在玩遊戲! 1.0.3,對於Siena的Fixtures支持還沒有出現,它應該在1.1中修復,但同時,我應該使用什麼來代替Fixtures.deleteAll()來在每次測試之前清除測試數據庫?

現在我的第二個斷言失敗,因爲數據庫保留了先前插入的記錄。

回答

2

您需要爲每個表格執行一次刪除操作。 E.g:

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

我不知道,如果它已經到晚期,但我已經添加了一些錫耶納夾具支持(1.1播放測試,GAE 1.4,錫耶納1.3,crudsiena 1.2)。

它支持deleteAll()load()

SienaFixture.javahttp://pastie.org/1367878

我非常新打和錫耶納(1周),因此有可能是這樣做的更好的方法(特別是deleteAll()) 。

+0

感謝這幫了很大的忙 – 2010-12-15 16:02:07