2012-11-01 34 views
0

我有這樣一個測試:如何在TestNG中停止回滾?

@ContextConfiguration(locations = { "file:war/WEB-INF/application-context.xml" }) 
public class ServiceImplTest extends AbstractTestNGSpringContextTests 
{ 
    @Autowired 
    private Service service; 

    @Rollback(false) 
    @Test 
    public void testCreate() 
    { 
      ..... 
       //save an entity to table_A 
     service.save(a); 
    } 
} 

表-A將被清理;如何停止這種清潔行動?

回答

0

嘗試將您的測試類標記爲事務性的,這也需要您使用彈簧測試類。

@RunWith(SpringJUnit4ClassRunner.class), 
@ContextConfiguration(locations = { "file:war/WEB-INF/application-context.xml" }) 
@Transactional 
public class ServiceImplTest extends AbstractTestNGSpringContextTests 
{ 
    @Autowired 
    private Service service; 

    @Test 
    @Rollback(false) 
    public void testCreate() 
    { 
      ..... 
       //save an entity to table_A 
     service.save(a); 
    } 
} 

您也可以嘗試使用@TransactionConfiguration,其中txMgr是您的事務管理器的名稱:

@RunWith(SpringJUnit4ClassRunner.class), 
@ContextConfiguration(locations = { "file:war/WEB-INF/application-context.xml" }) 
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=false) 
public class ServiceImplTest extends AbstractTestNGSpringContextTests 
{ 
    .... 
} 

在測試中的回滾功能是依賴於你如何管理你的交易,沒有這些信息就很難給你一個堅實的答案。

+0

看起來不是回滾的,而是先清理,因爲在每次測試之後,表中的所有舊數據條目均消失,只剩下由測試插入的條目。 –