2016-11-08 7 views
1

私は、SpringとJunitを使ってDAOレイヤーをテストしています。これは私のテストで:デフォルトでjunitのロールバックが有効になっていますか?

@ContextConfiguration(locations = "classpath:application-context-test.xml") 
@RunWith(SpringJUnit4ClassRunner.class) 
public class TestEmployeeDAO { 

@Autowired 
private EmployeeDAO employeeDAO; 

@Test 
@Transactional 
public void testInsertEmployee(){ 
    Employee employee = new Employee("Abdel Karim"); 
    employeeDAO.insert(employee); 
    . 
    . 
    . 
    } 
} 
} 

しかし、私は、テストを実行し、私は自分のデータベースを確認したとき、私は何の行が挿入されていないことがわかり、そして例外がスローされません。私はなぜ、Spring(SpringJUnit4ClassRunner)のデフォルト動作がトランザクションをロールバックするのか理解できませんか?

ありがとうございます。

+0

データが挿入されているかどうかをチェックするには、テストメソッド内で実行する必要があります。メソッドが実行されると、春は変更をロールバックします。 – Jobin

答えて

3

はい、デフォルトではロールバックがtrueです。それをオフにするには:

@Test 
@Transactional 
@Rollback(false) 
public void testInsertEmployee(){ 
    Employee employee = new Employee("Abdel Karim"); 
    employeeDAO.insert(employee); 
} 
関連する問題