2

テスト メソッドの開始前にデータベース トランザクションを開始し、すべてのテストの実行の最後にすべてのトランザクションをロールバックしたいと考えています。

どのように行うのですか?どの注釈を使用すればよいですか?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testApplicationContext.xml"})
public class MyTests{

   public void setUp(){
    //Insert temporary data to Database
   }

   @Test
   public void testOne(){
     //Do some DB transactions
   }

   @Test void testTwo(){
     //Do some more DB transactions
   }

   public void tearDown(){
   //Need to rollback all transactions
   }


}
4

3 に答える 3

5

Spring では@Transactional、テスト ケース クラスに注釈を追加するだけです。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testApplicationContext.xml"})
@Transactional   //CRUCIAL!
public class MyTests{

、、およびその他の機能を含む非常に詳細な詳細については、公式ドキュメントを確認してください。@TransactionConfiguration@BeforeTransaction@AfterTransaction

于 2012-08-14T08:06:54.713 に答える
4

@Before を使用してテスト前にメソッドを起動し、@After を使用してすべてのテスト後にメソッドを起動します。メソッドまたはクラスに対して @Transactional スプリングのアノテーションを使用してトランザクションを開始し、 @Rollback を使用してトランザクションで行われたすべてをロールバックします。

@Before   
public void setUp(){
    //set up, before every test method
}

@Transactional
@Test
public void test(){
}

@Rollback
@After
public void tearDown(){
   //tear down after every test method
}

また、同じ問題が別の方法で解決されています。

于 2012-08-14T08:10:31.860 に答える
1

@Beforeすべてのテストメソッドの前に実行する必要があり、すべてのテストメソッドの後に実行する必要があるメソッドには、アノテーションを使用して@Afterください。

この記事を参考にしてください。

于 2012-08-14T08:05:45.590 に答える