gpt4 book ai didi

java - Roo 集成测试 - 失败

转载 作者:行者123 更新时间:2023-11-30 11:57:13 29 4
gpt4 key购买 nike

我想尝试一下 Spring Roo,所以我今天遇到了很多有趣的新问题。希望你们能帮我解决最新的问题。 Roo 能够为您的实体生成集成测试,但其中大部分对我来说都失败了。最常见的失败是某种形式的约束违规,例如将 null 插入到非 null 字段中。我意识到我的实体上没有任何东西可以反射(reflect)数据库中的这些约束。

例如,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 应该能够设置非空值吗?

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

谢谢

最佳答案

我自己偶然发现了这个问题。虽然这个问题已经有两年了,但我希望问题发起者现在也已经找到了解决方案。希望我的回答对其他人有帮助。

显然,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;

关于java - Roo 集成测试 - 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com