A nice example of convert dbunit from using junit to testng - http://www.realsolve.co.uk/site/tech/blog.php?name=philzoio&mydate=20050826 redirect junit output to a file - http://www.diotalevi.com/weblog/?p=43 invokeNCopiesWithTimeout, run a test ( in runnable() ) for n times and see if it ok for multi-thread likely or not - http://binkley.blogspot.com/2007/09/running-n-foreground-tasks-in-java.html Use theories to execute test with a lot difference input, probably possible for all cases - http://blog.schauderhaft.de/2010/01/31/new-feature-of-junit-theories/ http://bloritsch.d-haven.net/articles/2010/02/09/using-junit-4-theories-to-test-contracts http://blog.schauderhaft.de/2010/02/07/junit-theories/ The other features, rule, perform some rule on test cases - http://blog.schauderhaft.de/2009/10/04/junit-rules/ Adding timeout - http://www.javaexperience.com/add-timeout-to-junit-test-cases/ Testing exceptions at Junit - http://fahdshariff.blogspot.gr/2012/09/testing-expected-exceptions-with-junit.html http://blog.codeleak.pl/2013/07/3-ways-of-handling-exceptions-in-junit.html http://www.ssiddique.info/best-java-unit-testing-frameworks-tools.html Skip test for some cases, or create test only for some cases - http://www.codeaffine.com/2013/11/18/a-junit-rule-to-conditionally-ignore-tests/ What new in junit5 - https://jaxlondon.com/blog/java-core-languages/junit-5-next-generation-testing-on-the-jvm/ https://98elements.com/blog/improve-your-tests-with-junit-5/ Compare with jupiter - https://sormuras.github.io/blog/2018-09-13-junit-4-core-vs-jupiter-api.html Beyond the simple: An in-depth look at JUnit 5’s nested tests, dynamic tests, parameterized tests, and extensions - https://blogs.oracle.com/javamagazine/beyond-the-simple-an-in-depth-look-at-junit-5s-nested-tests-dynamic-tests-parameterized-tests-and-extensions