2017-06-22 5 views
1

私はUserServiceTestを持っています。私はいくつかのユーザーデータをテストのためにデータベースにロードします。 queryByName、groupByAgeなどがあります。そして私は、このクラスでは、一度ロードしたいので、私はBeforeClassでBeforeClassメソッドを使用する方法

@BeforeClass 
public static void init(){ 
    // ... 
} 

を使用したいが、この場合には、私は、私はちょうどBefore例えばのようにデータを挿入するjdbcTemplateを使用することはできません見つけます

@Before 
public void setUp(){ 
    // prepare test data first   
    jdbcTemplate.execute("insert into user(firstname,lastname,birthday) values(...);"); 
} 

したがって、BeforeClassの方法では、どのようにinitデータを挿入しますか?

答えて

0

また、テストクラスの前にデータベースを初期化するためにTestExecutionListenersを使用することもできます。

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = TestConfig.class) 
@TestExecutionListeners(mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS, listeners = { 
     DbInitializerTestListener.class }) 
public class DbTest { 

} 


public class DbInitializerTestListener extends AbstractTestExecutionListener { 

    @Autowired 
    private JdbcTemplate jdbcTemplate; 

    @Override 
    public void beforeTestClass(TestContext testContext) throws Exception { 
     testContext.getApplicationContext() 
       .getAutowireCapableBeanFactory() 
       .autowireBean(this); 
     jdbcTemplate.execute("insert into user(firstname,lastname,birthday) values(...);"); 

    } 
} 

また、フレームワークDbUnitと考えることもできます。

関連する問題