Roo集成测试 - 失败

时间:2010-10-20 16:24:39

标签: java jpa integration-testing spring-roo

以为我会尝试Spring Roo,所以今天我遇到了许多新的有趣问题。希望你们能用最新的帮助我。 Roo能够为您的实体生成集成测试,但大多数都失败了。最常见的失败是某种形式的约束违规,例如将null插入到非空字段中。我意识到我的实体上没有任何东西可以反映数据库中的这些约束。

例如,Property Entity与Term

具有多对一关系
//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;

仍导致测试失败,因此不确定Roo是否足够聪明以自动创建Term实体。

所以我的问题是,如果我可以修改这些生成的测试而不让Roo在重启时覆盖它们吗?或者Roo能否设置非空值?

实际上没有太多关于集成测试的文档,以及您可以在任何地方使用生成的类做什么。我至少可以找到:)。

由于

1 个答案:

答案 0 :(得分: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;