spring-projects / spring-projects/spring-framework

Improve documentation of transactional support in the TestContext framework [SPR-11399]

Open
#16,026 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

in: test type: documentation
Dominant language
Java
Stars
60.2k
Forks
38.8k
Avg merge
5d 2h
Merged PRs (30d)
27

Description

Sam Brannen opened SPR-11399 and commented

Status Quo

The documentation in the reference manual for transactional support in the Spring TestContext Framework (TCF) is currently very lacking. Currently there are only two examples:

  • FictitiousTransactionalTest: a JUnit-based POJO test class that demonstrates the usage of all annotations related to transactions in the TCF, but in a less than exemplary fashion.
  • AbstractClinicTests: an extension of AbstractTransactionalJUnit4SpringContextTests that demonstrates the use of countRowsInTable() but not much else.

So, although there are two examples in the reference manual, neither of these demonstrates best practices or typical usage scenarios. Furthermore, there are zero examples using TestNG.


Deliverables
  1. Delete the AbstractClinicTests example and create a similar JUnit-based example in the "Transaction management" or "JUnit support classes" section.
  2. Repurpose content from the "PetClinic Example" section as a new "Best Practices" section.
  3. Create a TestNG-based example that is directly analogous to the new JUnit-based example, for comparison purposes.
  4. Add TestNG content related to the discussion in #16024.
  5. Add TestNG content related to the discussion in #10800.

Affects: 3.0 GA

Issue Links:

  • #16558 Document programmatic test transaction management support ("depends on")
  • #10800 AbstractTransactionalTestNGSpringContextTests not working as expected when an EJB with TransactionAttribute.REQUIRES_NEW is encountered
  • #16024 Support @Transactional on TestNG @BeforeClass methods in the TestContext framework

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the reference manual's transactional support section and the FictitiousTransactionalTest and AbstractClinicTests examples. Review PR #456 and the linked discussions in #16024 and #10800 before restructuring the examples. Done means the outdated example is replaced, JUnit and analogous TestNG best-practice examples are documented, and the requested TestNG topics are covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, spring
Domain
documentation, testing
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.