JUnit 5 introduces several new features including parameterized tests that allow running tests with different inputs, assumptions to conditionally execute tests, nested tests to group related tests and reduce boilerplate, annotations to name tests and repeat execution, and an extension API to customize test execution with multiple extensions registered per test class.