Интеграционные тесты Roo - ОТКАЗ - PullRequest
2 голосов
/ 20 октября 2010

Я думал, что попробую Spring Roo, поэтому у меня сегодня куча новых веселых проблем. Надеюсь, вы, ребята, можете помочь мне с последним. У 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;

Все еще вызывает сбой теста, поэтому не уверен, достаточно ли у Roo умного создания сущности Term.

Итак, мой вопрос, могу ли я изменить эти сгенерированные тесты, не перезаписывая их при перезапуске? Или Roo должен иметь возможность устанавливать ненулевые значения?

На самом деле не так много документации по интеграционным тестам и тому, что вы можете делать с сгенерированными классами где угодно. Что бы я смог найти хотя бы :)

Спасибо

1 Ответ

1 голос
/ 12 октября 2012

Я наткнулся на эту проблему сам. Хотя этому вопросу уже два года, я надеюсь, что этот вопрос уже нашел решение. Надеюсь, мой ответ поможет другим людям.

Очевидно, что 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...