1. 测试service
service 层业务逻辑较多,而且一般会和db发生关系。在测试代码中需要让测试用例成功跑完一遍后,不在db里留下测试数据,以免数据的问题引起测试失败或者没有测试到模拟的情况。
以下代码片段中通过@TransactionConfiguration注解将测试过程中的db操作在测试完成后默认作了一个回滚操作。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/test-base-config.xml")
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)
@Transactional(isolation = Isolation.READ_UNCOMMITTED, propagation = Propagation.REQUIRES_NEW)
public class XXXXServiceTest {
//在事务管理之外执行的代码,测试执行时 step1
@BeforeTransaction
public void verifyInitialDatabaseState() throws Exception{ }
//受事务管理器的管理,此处的db操作默认会回滚,测试执行时 step2
@Before
public void setUpTestDataWithinTransaction() throws Exception{ }
//测试代码,受事务管理器控制,测试执行时 step3
@Test
public void testYYYYYYY(){ }
//受事务管理器的管理,此处的db操作默认会回滚,测试执行时 step4
@After
public void tearDownWithinTransaction(){ }
//在事务管理之外执行的代码,测试执行时 step5
@AfterTransaction
public void verifyFinalDatabaseState() throws Exception{ }
}