Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
JUnit5 –
The Next Generation of JUnit
Richard Langlois P. Eng.
Solutions Architect
10 août 2016
 Why JUnit5
 What is New
 Demo
 Migration Tips
10 août 2016
Agenda
 Junit 4 is an All-in-one library
 Difficult for IDEs to deal with the library.
10 août 2016
Why Junit 5
 Revamped codebase with a modular architecture.
 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
 Junit Platfo...
MODIFIEZ LE STYLE DU TITRE
Architecture
• Test code depends only on the
JUnit 5 API.
• IDEs and build tools depend on
the ...
 JUnit 4
Import org.junit.Test
public class JUnit4Test {
@Test
public void aJunit4TestCase() {
assertTrue(“message”, 5 > ...
 New set of annotations which resides in a different package
(org.junit.jupiter.api) than their JUnit 4 counterparts:
 @...
 New package org.junit.jupiter.api
 Tests do not need to be public
 Meta-Annotation: Allows to define our own composed
...
 Assumptions: Skip the test execution if the assumption
condition is not met.
 E.g. assumeTrue, assumingThat
 Disabling...
 Extension Model:
 New extension API that supersedes the
previous @RunWith and @Rule extension mechanism
 Test construc...
 Dynamic tests:
 A DynamicTest is a test case generated at runtime.
 Generated at runtime by a factory method (annotate...
1. AnnotationTestDemo.java
2. MetaAnnotationDemo.java
3. BeforeAfterDemo.java
4. DisplayNameDemo.java
5. AssertionsDemo.ja...
 Annotations reside in the org.junit.jupiter.api package.
 Assertions reside in org.junit.jupiter.api.Assertions.
 Assu...
 Project Homepage
 http://junit.org/junit5
 User Guide
 http://junit.org/junit5/docs/current/user-guide
 Javadoc
 ht...
 Questions?
 Next Lunch & Learn:
 Introduction to Docker, by John Okrasa
10 août 2016
Thank You !
Upcoming SlideShare
Loading in …5
×

What is new in JUnit5

680 views

Published on

I presented this talk to a Dev team at Alithya, Montreal, in September 2016.

Published in: Software
  • I can advise you this service - ⇒ www.HelpWriting.net ⇐ Bought essay here. No problem.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Have u ever tried external professional writing services like ⇒ www.WritePaper.info ⇐ ? I did and I am more than satisfied.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

What is new in JUnit5

  1. 1. JUnit5 – The Next Generation of JUnit Richard Langlois P. Eng. Solutions Architect 10 août 2016
  2. 2.  Why JUnit5  What is New  Demo  Migration Tips 10 août 2016 Agenda
  3. 3.  Junit 4 is an All-in-one library  Difficult for IDEs to deal with the library. 10 août 2016 Why Junit 5
  4. 4.  Revamped codebase with a modular architecture.  JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage  Junit Platform: Defines TestEngine API for developing a testing framework that runs on the platform.  Junit Jupiter: provides TestEngine for running Junit 5 based tests on the platform.  Junit Vintage: provides TestEngine for running Junit 3 and Junit 4 based tests on the platform.  Test code depends only on the JUnit 5 API.  IDE support: As of August 2016, supported by IntelliJ IDEA 2016.2  Milestone 2 released on July 23, 2016  GA release (due late 2016).  Code samples available on GitHub (https://github.com/junit-team/junit5-samples) 10 août 2016 What is Junit 5
  5. 5. MODIFIEZ LE STYLE DU TITRE Architecture • Test code depends only on the JUnit 5 API. • IDEs and build tools depend on the Launcher and Engine APIs and can execute tests independent of the testing framework in use. 10 août 2016
  6. 6.  JUnit 4 Import org.junit.Test public class JUnit4Test { @Test public void aJunit4TestCase() { assertTrue(“message”, 5 > 6); } }  JUnit 5 Import org.junit.jupiter.api.Test class JUnit5Test { @Test void aJunit5TestCase() { assertTrue(5 > 6, “message”); } } 10 août 2016 JUnit 4 vs JUnit 5
  7. 7.  New set of annotations which resides in a different package (org.junit.jupiter.api) than their JUnit 4 counterparts:  @Test: the method is a test  @TestFactory: the method is a test factory for dynamic tests  @DisplayName: declares a custom display name (class or method)  @BeforeEach: method executed before each test method  @AfterEach: method executed after each test method  @BeforeAll: method executed before all test methods  @AfterAll: method executed after all test methods  @Nested: denotes that the class is a nested, non-static test class  @Tag: declare a tag for filtering tests (class or method)  @Disabled: disable a test class or test method  @ExtendWith: register custom extensions 10 août 2016 What is New
  8. 8.  New package org.junit.jupiter.api  Tests do not need to be public  Meta-Annotation: Allows to define our own composed annotation  Display Names with @DisplayName(“…”)  Can contain spaces, special chars, and emoji 😱  Assertions  Optional message is now the last parameter  Grouped assertions using assertAll()  expectThrows: check that method throws an exception, and returns the exception object to allow further testing. 10 août 2016 What is New (continued)
  9. 9.  Assumptions: Skip the test execution if the assumption condition is not met.  E.g. assumeTrue, assumingThat  Disabling test with @Disabled  Tagging: used to enable/disable tests with specific tags in a build and execution  Equivalent of the Categories in JUnit 4  e.g. @Tag(“fast”).  Nested Tests: Allow expressing relationship among several group of tests. 10 août 2016 What is New (continued)
  10. 10.  Extension Model:  New extension API that supersedes the previous @RunWith and @Rule extension mechanism  Test constructors and methods are now permitted to have parameters enabling dependency injection.  2 built-in resolvers:  TestInfo: information about the current test (e.g. display name)  TestReporter: to publish additional data about the current test run  Custom ParameterResolver: Specified with @ExtendWith 10 août 2016 What is New (continued)
  11. 11.  Dynamic tests:  A DynamicTest is a test case generated at runtime.  Generated at runtime by a factory method (annotated with @TestFactory).  @TestFactory method returns a Stream, Collection, Iterable or Iterator of DynamicTest instances. 10 août 2016 What is New (continued)
  12. 12. 1. AnnotationTestDemo.java 2. MetaAnnotationDemo.java 3. BeforeAfterDemo.java 4. DisplayNameDemo.java 5. AssertionsDemo.java 6. AssumptionsDemo.java 7. DisabledClassDemo.java 8. DisabledTestDemo.java 9. TaggingDemo.java 10. NestedTestDemo.java 11. ParameterTestInfoDemo.java 12. ParameterTestReporterDemo.java 13. DynamicTestDemo.java 10 août 2016 Demo
  13. 13.  Annotations reside in the org.junit.jupiter.api package.  Assertions reside in org.junit.jupiter.api.Assertions.  Assumptions reside in org.junit.jupiter.api.Assumptions.  @Before and @After no longer exist; use @BeforeEach and @AfterEach instead.  @BeforeClass and @AfterClass no longer exist; use @BeforeAll and @AfterAll instead.  @Ignore no longer exists: use @Disabled instead.  @Category no longer exists; use @Tag instead.  @RunWith no longer exists; superseded by @ExtendWith.  @Rule and @ClassRule no longer exist; superseded by @ExtendWith. 10 août 2016 JUnit 4 to JUnit 5 Migration Tips
  14. 14.  Project Homepage  http://junit.org/junit5  User Guide  http://junit.org/junit5/docs/current/user-guide  Javadoc  https://junit.ci.cloudbees.com/job/JUnit5/javadoc  GitHub  https://github.com/junit-team/junit5  Sample Projects  https://github.com/junit-team/junit5-samples  Twitter  https://twitter.com/JUnitTeam  Stack Overflow  http://stackoverflow.com/tags/junit5 10 août 2016 References
  15. 15.  Questions?  Next Lunch & Learn:  Introduction to Docker, by John Okrasa 10 août 2016 Thank You !

×