2010-10-20 138 views
2

以爲我會嘗試Spring Roo,所以我今天有很多新的有趣的問題。希望你們可以幫助我最新的一個。 Roo有能力爲您的實體生成集成測試,但其中大多數都失敗了。最常見的失敗是某種形式的約束違規,如null被插入到非空字段中。我意識到我的實體沒有什麼能反映數據庫中的這些限制。Roo集成測試 - 失敗

例如物業實體與期限

//bi-directional many-to-one association to Term 
    @ManyToOne 
@JoinColumn(name="TERM_ID",) 
private Term term; 

改變,要多到一的關係:

//bi-directional many-to-one association to Term 
@ManyToOne(optional=false) 
@JoinColumn(name="TERM_ID", nullable=false) 
private Term term; 

還是引起測試失敗所以不知道袋鼠是聰明足以自動創建一個Term實體。

所以我的問題是,如果我可以修改這些生成的測試沒有Roo覆蓋重新啓動它們?或者應該Roo能夠設置非空值?

真的沒有太多關於集成測試的文檔,以及您可以使用生成的類在任何地方執行什麼操作。我至少可以找到:)

謝謝

回答

1

我自己偶然發現了這個問題。雖然這個問題已經兩年多了,但我希望問題的提出者現在也能找到解決方案。希望我的回答可以幫助其他人。

顯然,Roo使用來自JSR 303的驗證而不是JPA約束來生成正確的集成測試。

JPA對數據庫強加約束,但不對應用程序邏輯施加約束。爲了讓Roo生成正確的集成測試,您必須指定與應用程序邏輯相同的約束。爲了兼得,只需使用JPA和JSR 303的註釋。

... 
import javax.validation.constraints.NotNull; 
.... 

@ManyToOne(optional=false) 
@JoinColumn(name="TERM_ID", nullable=false) 
@NotNull 
private Term term;