У меня есть два класса Software, Tag - они связаны ManyToMany.
Мы НЕ МОЖЕМ создавать Программное обеспечение, не помещая в него тег.
Я хочу написать тест, который проверяет, что:
</p>
<p>@Test
public void createSoftwareWithNullTags() {</p>
<pre><code> List<Tag> tags = null;
Software software = new Software("software1", "description1", tags);
try {
software.save();
fail("tags should not be null");
} catch (Exception ex) {
// NEVER COME HERE !!!
}
}
Итак, этот тест не пройден. Я думаю, что это не очень хороший тест для этого случая - потому что он даже не пытается сохранить данные в таблицу SOFTWARE_TAG. Конечно, я мог бы сделать проверку вручную, но я хочу реализовать ее в режиме гибернации, используя некоторые аннотации или что-то еще. Является ли это возможным? Или как бы вы это сделали?
Мои сущности:
@Entity
public class Tag extends Model {</p>
<pre><code>public String title;
public Tag(String title) {
this.title = title;
}
@ManyToMany(
cascade = {CascadeType.ALL},
mappedBy = "tags",
targetEntity = Software.class
)
public List<Software> softwares;
}
</p>
<p>@Entity
public class Software extends Model {</p>
<pre><code>public String title;
public String description;
@ManyToOne(optional = false)
public Author author;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "SOFTWARE_TAG",
joinColumns = @JoinColumn(name = "Software_id"),
inverseJoinColumns = @JoinColumn(name = "Tag_id")
)
public List<Tag> tags;
public Software(String title, String description, Author author, List<Tag> tags) {
this.title = title;
this.description = description;
this.author = author;
this.tags = tags;
}
}