Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Roo集成测试-失败_Java_Jpa_Integration Testing_Spring Roo - Fatal编程技术网

Java Roo集成测试-失败

Java Roo集成测试-失败,java,jpa,integration-testing,spring-roo,Java,Jpa,Integration Testing,Spring Roo,我想试试SpringRoo,所以今天我遇到了很多有趣的新问题。希望你们能帮我做最新的。Roo能够为您的实体生成集成测试,但对我来说,大多数测试都失败了。最常见的故障是某种形式的约束冲突,如将null插入到非null字段中。我意识到,我的实体上没有任何东西能够在数据库中反映这些约束 例如,属性实体与术语具有多对一关系 //bi-directional many-to-one association to Term @ManyToOne @JoinColumn(name="TERM_ID",

我想试试SpringRoo,所以今天我遇到了很多有趣的新问题。希望你们能帮我做最新的。Roo能够为您的实体生成集成测试,但对我来说,大多数测试都失败了。最常见的故障是某种形式的约束冲突,如将null插入到非null字段中。我意识到,我的实体上没有任何东西能够在数据库中反映这些约束

例如,属性实体与术语具有多对一关系

//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是否足够聪明,能够自动创建一个术语实体

所以我的问题是,我是否可以修改这些生成的测试,而不会在重启时被Roo覆盖?或者Roo应该能够设置非空值吗

关于集成测试以及您可以在任何地方对生成的类执行什么操作的文档并不多。我至少能找到:)


谢谢

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

显然,Roo使用来自JSR303的验证而不是JPA约束来生成正确的集成测试

JPA对数据库施加约束,但对应用程序逻辑不施加约束。为了让Roo生成正确的集成测试,您还必须指定与应用程序逻辑相同的约束。为了两者兼备,只需使用来自JPA和JSR303的注释

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

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