package org.verwandlung.voj.web.mapper; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import org.verwandlung.voj.web.model.EmailValidation; import java.util.Date; /** * EmailValidationMapper的测试类. * * @author Haozhe Xie */ @RunWith(SpringJUnit4ClassRunner.class) @Transactional @ContextConfiguration({"classpath:test-spring-context.xml"}) public class EmailValidationMapperTest { /** * 测试用例: 测试getEmailValidation(String)方法 * 测试数据: 使用存在的电子邮件地址 * 预期结果: 返回预期的EmailValidation对象 */ @Test public void testGetEmailValidationExists() { EmailValidation emailValidation = emailValidationMapper.getEmailValidation("support@verwandlung.org"); Assert.assertNotNull(emailValidation); String token = emailValidation.getToken(); Assert.assertEquals("Random-String-Generated", token); } /** * 测试用例: 测试getEmailValidation(String)方法 * 测试数据: 使用不存在的电子邮件地址 * 预期结果: 返回空引用 */ @Test public void testGetEmailValidationNotExists() { EmailValidation emailValidation = emailValidationMapper.getEmailValidation("not-exists@verwandlung.org"); Assert.assertNull(emailValidation); } /** * 测试用例: 测试createEmailValidation(EmailValidation)方法 * 测试数据: 使用合法的数据集, 并且该电子邮件地址不存在相应的记录 * 预期结果: 数据插入操作成功完成 */ @Test public void testCreateEmailValidationNormally() { EmailValidation emailValidation = new EmailValidation("cshzxie@gmail.com", "RandomToken", new Date()); int numberOfRowsAffected = emailValidationMapper.createEmailValidation(emailValidation); Assert.assertEquals(1, numberOfRowsAffected); EmailValidation insertedEmailValidation = emailValidationMapper.getEmailValidation("cshzxie@gmail.com"); Assert.assertNotNull(insertedEmailValidation); String token = emailValidation.getToken(); Assert.assertEquals("RandomToken", token); } /** * 测试用例: 测试createEmailValidation(EmailValidation)方法 * 测试数据: 使用合法的数据集, 但已存在该电子邮件地址对应的记录 * 预期结果: 抛出DuplicateKeyException异常 */ @Test(expected = org.springframework.dao.DuplicateKeyException.class) public void testCreateEmailValidationUsingExistingEmail() { EmailValidation emailValidation = new EmailValidation("support@verwandlung.org", "RandomToken", new Date()); emailValidationMapper.createEmailValidation(emailValidation); } /** * 测试用例: 测试createEmailValidation(EmailValidation)方法 * 测试数据: 使用合法的数据集, 但该电子邮件地址无用户使用(不满足外键参照完整性) * 预期结果: 抛出DataIntegrityViolationException异常 */ @Test(expected = org.springframework.dao.DataIntegrityViolationException.class) public void testCreateEmailValidationUsingNotExistingEmail() { EmailValidation emailValidation = new EmailValidation("not-exists@verwandlung.org", "RandomToken", new Date()); emailValidationMapper.createEmailValidation(emailValidation); } /** * 测试用例: 测试deleteEmailValidation(String)方法 * 测试数据: 存在的电子邮件地址 * 预期结果: 数据删除操作成功完成 */ @Test public void testDeleteEmailValidationExists() { EmailValidation emailValidation = emailValidationMapper.getEmailValidation("support@verwandlung.org"); Assert.assertNotNull(emailValidation); int numberOfRowsAffected = emailValidationMapper.deleteEmailValidation("support@verwandlung.org"); Assert.assertEquals(1, numberOfRowsAffected); emailValidation = emailValidationMapper.getEmailValidation("support@verwandlung.org"); Assert.assertNull(emailValidation); } /** * 测试用例: 测试deleteEmailValidation(String)方法 * 测试数据: 不存在的电子邮件地址 * 预期结果: 方法正常执行, 未影响数据表中的数据 */ @Test public void testDeleteEmailValidationNotExists() { int numberOfRowsAffected = emailValidationMapper.deleteEmailValidation("not-exist@verwandlung.org"); Assert.assertEquals(0, numberOfRowsAffected); } /** * 待测试的EmailValidationMapper对象. */ @Autowired private EmailValidationMapper emailValidationMapper; }