JaCoCo does not provide coverage per test out of the box, but using JaCoCo APIs it is definitely possible to get this data without any modifications in JaCoCo codebase.
Some time ago I did a prototype, which end up being presented in SonarQube:
It works by requesting JaCoCo APIs to start a new coverage session each time new test starts, which means:
- you need to know test boundaries, which creates dependency with a testing framework ( SonarQube provides listeners for JUnit and TestNG ) and that's mainly why this code is not presented in JaCoCo
- you can guarantee that within one JVM tests won't be executed in parallel, still you can run tests in parallel using multiple JVMs
- we did an improvement in JaCoCo recently ( https://github.com/jacoco/jacoco/pull/387 ) for this case, but anyway output might be significantly bigger than usual
Hope this helps and good luck with your research.
Best regards,
Evgeny