基于迁移数据的java集成测试spring服务层
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext-test.xml"})
@Transactional
public class MyServiceTest {
@Resource(name="myService")
public MyService myService;
@Test
public void testSeomthing() {
//do some asserts using myService.whatever()
}
}
然而,这些测试是基于我移植的数据,所以每次运行测试套件时,我都想执行不相关的移植代码。我不想在每个测试类中运行@Before
。我想在整个测试过程开始时运行一次,我可以把它放在哪里
# 1 楼答案
我建议您在某处创建一个测试bean,并在^{中调用启动逻辑:
显然,这个bean应该只为测试而创建,实现这一点的最简单方法是将它放在Spring为
@Service
注释类src/test/java
指定的包中注意:您必须记住
@PostConstruct
没有在事务中运行!见How to call method on spring proxy once initialised# 2 楼答案
JUnit还提供了@BeforeClass注释,您可以将其放在静态方法上,只需初始化一次资源