@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
。我想在完整的测试过程开始时运行一次,我可以把它放在哪里?
答案 0 :(得分:1)
JUnit还提供@BeforeClass注释,您可以将其置于静态方法上以仅初始化资源一次。
答案 1 :(得分:1)
我建议你在@PostConstruct
调用启动逻辑的地方创建一个测试bean:
@Service
public class TestBean {
@PostConstruct
public void init() {
//startup logic here
}
}
显然,只应为测试创建此bean,实现此目的的最简单方法是将其放在src/test/java
的Spring component-scan
的{{1}}包中,用于@Service
- 注释类。
注意:您必须记住@PostConstruct
未在交易中运行!请参阅How to call method on spring proxy once initialised。