spring 下测试代码编写

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{    }

}

posted @ 2013-04-25 20:09  agefisher  阅读(340)  评论(0编辑  收藏  举报