我有一个UserServiceTest
,我想初始化一些用户数据到数据库进行测试,例如queryByName,groupByAge等。我想在这个类中只加载一次,所以我想使用BeforeClass
@BeforeClass
public static void init(){
// ...
}
但在这种情况下,我发现我无法使用jdbcTemplate
来插入数据,就像在Before
中一样
@Before
public void setUp(){
// prepare test data first
jdbcTemplate.execute("insert into user(firstname,lastname,birthday) values(...);");
}
那么在BeforeClass
方法中如何插入init数据?
答案 0 :(得分: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框架。