我有

@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(defaultRollback = true, transactionManager = "transactionManager")

   @Before
   @Transactional
   public void mySetup() {
      // insert some records in db
   }

   @After
   @Transactional
   public void myTeardown() {
      // delete some records
   }

   @Test
   @Transactional
   public void testMy() {
      // do stuff
   }

我的问题是:mySetup,testMy和myTeardown是否都将在同一事务中运行?似乎他们应该这样做,但是我遇到了一个奇怪的错误,这可能表明他们正在互相踩踏。

最佳答案

是的,这三种方法将在同一事务中运行。请参阅引用文档中的TestContext Framework/Transaction management部分:



因此,关于@TransactionalmySetup()myTeardown()注释是多余的,或者甚至可能被认为具有误导性,因为它们的事务性由当前正在执行的单个测试方法确定。

这是因为beforeTestMethod()(负责启动/完成事务)的afterTestMethod()TransactionalTestExecutionListener回调分别在JUnit的@Before和JUnit的@After方法之后执行。

09-10 07:19
查看更多