我将 Hibernate 4.0.1.Final 与 MySQL 5.5 数据库一起使用。我正在编写一个 Java 控制台应用程序。在 JUnit 测试中,我无法让测试失败。这是我正在测试的模型……</p>
@Entity
@Table(name = "ic_domain")
public class Domain {
@Id
@Column(name = "DOMAIN_ID")
private String domainId;
@OneToOne(fetch = FetchType.EAGER, targetEntity = Organization.class)
@JoinColumn(name = "ORGANIZATION_ID")
private Organization org;
和
@Entity
@Table(name = "ic_organization")
public class Organization {
@Id
@Column(name = "ORGANIZATION_ID")
private String organizationId;
我的问题是,在我的 JUnit 测试中,我试图创建一个不存在的外键,期望在保存时会失败,但他们从来没有这样做。这是 JUnit 测试
@Test
public void testSaveDomainWithUnmathcedOrg() {
final Organization org = createDummyOrg();
// Create an org id that doesn't exist.
org.setOrganizationId("ZZZZ");
final Domain domain = new Domain();
final String id = UUID.randomUUID().toString().replace("-", "");
domain.setDomainId(id);
domain.setName(org.getName());
domain.setOrg(org);
m_domainDao.saveOrUpdate(domain);
} // testSaveDomainWithUnmatchedOrg
DAO 的代码是
public void saveOrUpdate(final Domain domain) {
final Session session = sessionFactory.getCurrentSession();
session.saveOrUpdate(obj);
} // saveOrUpdate
“session.saveOrUpdate”不应该失败吗?我该怎么做?我不想在 JUnit 测试中提交我的数据,因为我不想用虚拟数据污染底层数据库,但如果这是唯一的方法,那就这样吧。