提交 9f751ef9 编写于 作者: S Sam Brannen

Polish contribution

See: gh-456
上级 b4fc7b41
...@@ -3520,17 +3520,25 @@ Annotating a test method with `@Transactional` causes the test to be run within ...@@ -3520,17 +3520,25 @@ Annotating a test method with `@Transactional` causes the test to be run within
transaction that is, by default, automatically rolled back after completion of the test. transaction that is, by default, automatically rolled back after completion of the test.
If a test class is annotated with `@Transactional`, each test method within that class If a test class is annotated with `@Transactional`, each test method within that class
hierarchy runs within a transaction. Test methods that are not annotated with hierarchy runs within a transaction. Test methods that are not annotated with
`@Transactional` (at the class or method level) are not run within a transaction. `@Transactional` (at the class or method level) are not run within a transaction. Note
Furthermore, tests that are annotated with `@Transactional` but have the `propagation` that `@Transactional` is not supported on test lifecycle methods for example, methods
type set to `NOT_SUPPORTED` are not run within a transaction. annotated with JUnit Jupiter's `@BeforeAll`, `@BeforeEach`, etc. Furthermore, tests that
are annotated with `@Transactional` but have the `propagation` type set to
`NOT_SUPPORTED` are not run within a transaction.
[TIP] [TIP]
==== ====
When using TestNG `@BeforeClass`,`@BeforeSuite` methods can not be used with the Method-level lifecycle methods — for example, methods annotated with JUnit Jupiter's
`@Transactional` annotation, as they are considered non transactional methods by the `@BeforeEach` or `@AfterEach` are run within a test-managed transaction. On the other
the spring text contetxt framework. However, you can inject a `PlatfromTransactionManager` hand, suite-level and class-level lifecycle methods for example, methods annotated with
or a `TransactionTemplate` and use it within `@BeforeClass` method to perform a JUnit Jupiter's `@BeforeAll` or `@AfterAll` and methods annotated with TestNG's
transaction. `@BeforeSuite`, `@AfterSuite`, `@BeforeClass`, or `@AfterClass` are _not_ run within a
test-managed transaction.
If you need to execute code in a suite-level or class-level lifecycle method within a
transaction, you may wish to inject a corresponding `PlatformTransactionManager` into
your test class and then use that with a `TransactionTemplate` for programmatic
transaction management.
==== ====
Note that <<testcontext-support-classes-junit4, Note that <<testcontext-support-classes-junit4,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册