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);
     }
 }

table_Aは、各テストの実行前にクリーンアップされるようです(テスト実行後のロールバックではありません)。これは、各テストの後に、テーブル内のすべての古いデータエントリがクリーンアップされ、テストによって新しく挿入されたエントリのみが残るためです。これを防ぐ方法「クリーニング」アクション?

4

1 に答える 1

1

デフォルトの動作は、テストコンテキストでトランザクションをロールバックすることです。テストメソッドのアノテーションを使用してこの動作をオーバーライドし、@Rollback(false)その特定のテスト中にDBに加えられた変更をロールバックしないようにすることができます。

ただし、各テストケースは独立しており、独自のシナリオセットアップ、シナリオ実行、およびシナリオ分解を行うことをお勧めします。そうしないと、テスト間に相互依存関係がある場合、テストの失敗動作を分析するのが困難になります。

于 2012-11-03T05:22:47.113 に答える