Java 如何使测试中的setup方法(使用@Before)不回滚,即使将测试方法(使用@test)设置为回滚?

Java 如何使测试中的setup方法(使用@Before)不回滚,即使将测试方法(使用@test)设置为回滚?,java,spring,junit,Java,Spring,Junit,我正在setup()方法中加载一些测试数据。 也就是说,我希望这个测试数据设置一次,并且可以用于类中的所有测试 但是,事务测试方法(用@test和@Rollback(true)注释)也会导致setup方法回滚 是否有办法确保只有测试方法回滚,而不是设置? 注意:-不能使用@BeforeClass,因为我需要从spring上下文访问自动连线bean,如果它被注释为@BeforeClass,则在setup()的静态上下文中不可用 谢谢, 谢哈尔 PS:stackoverflow中也提出了类似的问题

我正在setup()方法中加载一些测试数据。 也就是说,我希望这个测试数据设置一次,并且可以用于类中的所有测试

但是,事务测试方法(用@test和@Rollback(true)注释)也会导致setup方法回滚

是否有办法确保只有测试方法回滚,而不是设置? 注意:-不能使用@BeforeClass,因为我需要从spring上下文访问自动连线bean,如果它被注释为@BeforeClass,则在setup()的静态上下文中不可用

谢谢, 谢哈尔


PS:stackoverflow中也提出了类似的问题,但从未回答过:-

使用
@TestExecutionListener
而不是
@BeforeClass
。这样,在执行之前将加载测试上下文。此外,设置代码是外部化的,可以在其他测试中重用


更多信息可以在这里找到:

我可以访问beforeTestClass覆盖中的自动连接bean吗,在我从AbstractTestExecutionListener扩展的类中?似乎不起作用。所有自动连接bean似乎都为空。因此,我不能使用它们加载测试数据。我猜,不能使用@autowired注释。必须使用-testContext.getApplicationContext().getBean(“”)