SlideShare a Scribd company logo
5
JUNIT 5 EXTENSIONS
MARC PHILIPP
5
MARC PHILIPP
So ware Engineer at 
JUnit Maintainer since 2012
Twi er:   
Web: 
@marcphilipp
marcphilipp.de
5
 
JUNIT 5 IS HERE!
5.0 
September 10, 2017
5.1 
February 18, 2018
5.2 
April 29, 2018
5
✋
SHOW OF HANDS
5
JUNIT5
P L AT F O R M
Another Test
P A R T Y
T H I R D
J U P I T E RV I N TA G E
 
5
JUNIT JUPITER
P L AT F O R M
JUPITER
 
5
JUNIT JUPITER API
programming model for test authors
extension model for extension authors
5
PROGRAMMING MODEL
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
class SimpleTest {
@Test
@DisplayName("1 + 1 = 2")
void onePlusOneEqualsTwo() {
assertEquals(2, 1 + 1);
}
}
5
EXTENSION MODEL
import org.junit.jupiter.api.extension.*;
class MyCustomExtension
implements BeforeEachCallback, AfterEachCallback {
@Override
public void beforeEach(ExtensionContext context) {
// setup
}
@Override
public void afterEach(ExtensionContext context) {
// teardown
}
}
5
EXTENSION REGISTRATION
Declara ve:  @ExtendWith  on classes or methods
Programma c:  @RegisterExtension  on fields
Global: via  ServiceLoader 
You can register as many extensions as you need
simultaneously
5
PROGRAMMING MODEL MEETS
EXTENSION MODEL
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.*;
import static org.junit.jupiter.api.Assertions.*;
@ExtendWith(MyCustomExtension.class)
class SimpleTest {
@RegisterExtension Extension myExtension = new AnotherExtension(42);
@Test
@ExtendWith({FooExtension.class, BarExtension.class})
void onePlusOneEqualsTwo() {
assertEquals(2, 1 + 1);
}
}
5
CONDITIONAL TEST
EXECUTION
5
DEMO
h ps://github.com/marcphilipp/junit5‑extensions‑demo
5
EXTENSION CONTEXT
Represents the current node in the test tree, e.g. test
method or class
Provides access to meta informa on about such a node,
e.g. display name, method, class
5
EXTENSION CONTEXT
root : ExtensionContext
displayName = "JUnit Jupiter"
parent
class1 : ExtensionContext
displayName = "TestClass1"
parent
test1 : ExtensionContext
displayName = "test1()"
parent
test2 : ExtensionContext
displayName = "test2()"
parent
class2 : ExtensionContext
displayName = "TestClass2"
parent
test3 : ExtensionContext
displayName = "test3()"
 
5
LESSONS LEARNED
Using custom logic to determine whether a test
class/method should be skipped
Registering an extension globally
Deac va ng a condi on without changing the code
5
REUSABLE TEST
SETUP & TEARDOWN
5
DEMO
h ps://github.com/marcphilipp/junit5‑extensions‑demo
5
WHY THE STORE ABSTRACTION?
An extension needs to save and retrieve data, e.g. to clean
up in the end
 Extensions  are instan ated once and called for mul ple
tests
Using instance variables would be error‑prone
extensionContext
.getStore(Namespace.create(...))
.getOrComputeIfAbsent("key", key -> ...)
5
STORE
 Map ‑like interface for extensions to save and retrieve
data, e.g.  store.put(key, value) 
Accessed via a  Namespace : Enables sharing data across
extensions, but makes it a deliberate decision (e.g.
 Namespace.GLOBAL )
Reading from a  Store  follows the hierarchy upwards, if a
key is not found
5
STORE
root : ExtensionContext
displayName = "JUnit Jupiter"
parent
class1 : ExtensionContext
displayName = "TestClass1"
parent
store
test1 : ExtensionContext
displayName = "test1()"
a : Store
+ get(Object, Class<T>): T, ...
parent
b : Store
+ get(Object, Class<T>): T, ...
parent
c : Store
+ get(Object, Class<T>): T, ...
Namespace
store
Namespace
store
Namespace
 
5
AUTOMATIC CLEAN‑UP
 CloseableResource  instances in a  Store  are automa cally
closed when the scope of the corresponding
 ExtensionContext  ends.
class DockerClientResource implements CloseableResource {
private final DockerClient dockerClient;
DockerClientResource() {
var config = DefaultDockerClientConfig.createDefaultConfigBuilder
dockerClient = DockerClientBuilder.getInstance(config).build();
}
DockerClient get() {
return dockerClient;
}
@Override public void close() throws Throwable {
dockerClient.close();
}
}
5
LESSONS LEARNED
Using the  Store  class for extension state
Using Lifecycle Callbacks to enable reuse of common
setup/teardown code
Implemen ng mul ple  Extension  interfaces in a single
extension
5
RESOLVING TEST
PARAMETERS
5
DEMO
h ps://github.com/marcphilipp/junit5‑extensions‑demo
5
LESSONS LEARNED
How to resolve test method parameters in an
 Extension ?
You can also inject parameters into test class constructors
and  @BeforeEach / @AfterEach  methods etc.
5
PROVIDING
ARGUMENTS FOR
PARAMETERIZED
TESTS
5
DEMO
h ps://github.com/marcphilipp/junit5‑extensions‑demo
5
LESSONS LEARNED
Using Parameterized Tests
Wri ng a custom  ArgumentsProvider  that loads data
from a JSON file, …
5
FROM TESTS TO TEST
TEMPLATES
5
DEMO
h ps://github.com/marcphilipp/junit5‑extensions‑demo
5
LESSONS LEARNED
Execu ng a test mul ple  mes with different contexts
Implemen ng a  TestInvocationContextProvider 
5
SUPPORT CLASSES
Package  org.junit.platform.commons.support  contains:
 AnnotationSupport  to scan for custom annota ons,
including meta‑annota ons
 ReflectionSupport  for classpath scanning, finding
methods, invoking them etc.
5
SUMMARY
5
EXTENSION POINTS
Lifecycle:  BeforeAllCallback ,  BeforeEachCallback  ✅,
 BeforeTestExecutionCallback ,
 TestExecutionExceptionHandler ,
 AfterTestExecutionCallback ,  AfterEachCallback  ✅,
 AfterAllCallback 
Other:  ExecutionCondition  ✅,
 TestInstancePostProcessor ,  ParameterResolver  ✅,
 TestTemplateInvocationContextProvider  ✅
5
JUNIT JUPITER IS EXTENSIBLE
A lot of extension points to choose from
The JUnit team will add more in future releases
Combining mul ple extension points in one extension is
very powerful!
5
THIRD‑PARTY EXTENSIONS
Spring, Mockito, Docker, Wiremock, JPA,
Selenium/WebDriver, DbUnit, Ka a, Jersey, GreenMail,
S3Mock, Citrus Framework, XWiki, …
h ps://github.com/junit‑team/junit5/wiki/Third‑party‑
Extensions
5
GETTING STARTED
User Guide: 
Sample projects for Gradle, Maven, and Ant: 
Javadoc: 
h p://junit.org/junit5/docs/current/user‑guide/
h ps://github.com/junit‑team/junit5‑samples
h p://junit.org/junit5/docs/current/api/
5
WANTED: FEEDBACK!
StackOverflow: 
Code & Issues: 
Twi er: 
h p://stackoverflow.com/ques ons/tagged/junit5
h ps://github.com/junit‑team/junit5/
h ps://twi er.com/juni eam
5
EXAMPLE CODE
h ps://github.com/marcphilipp/junit5‑extensions‑demo
5
QUESTIONS?
 
   or @marcphilipp @juni eam
5
THANKS!

More Related Content

What's hot

Using Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge InteractiveUsing Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge Interactive
Matthew McCullough
 
201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english
tkawashita
 
Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Stefan Lay
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Stefan Lay
 
JAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great MigrationJAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great Migration
jazoon13
 
ReviewNinja OSCON
ReviewNinja OSCONReviewNinja OSCON
ReviewNinja OSCON
dfarr219
 
Story of LeSS by Bas Vodde
Story of LeSS by Bas VoddeStory of LeSS by Bas Vodde
Story of LeSS by Bas Vodde
Agile ME
 
Android Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG FirenzeAndroid Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG Firenze
Fabio Collini
 
Bas Vodde - The story of LEsS
Bas Vodde - The story of LEsSBas Vodde - The story of LEsS
Bas Vodde - The story of LEsS
Scrum Australia Pty Ltd
 
Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.
Toshihiro Yagi
 
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Rami Rantala
 
How to improve quality of product in an agile environmemt madhur kathuria
How to improve quality of product in an agile environmemt madhur kathuriaHow to improve quality of product in an agile environmemt madhur kathuria
How to improve quality of product in an agile environmemt madhur kathuriaIndia Scrum Enthusiasts Community
 
Ant Unit Your Functional Test
Ant Unit Your Functional TestAnt Unit Your Functional Test
Ant Unit Your Functional Test
jimmy zhao
 
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
Evan Lin
 
Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014
Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014
Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014msohn
 
componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+
Rohan Nair
 
Paving roads
Paving roadsPaving roads
Paving roads
gilforcada
 
Appium testing
Appium testingAppium testing
Appium testing
Muhammad D. Ramadhan
 
Brightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course ContentBrightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course Content
D2L Barry
 
Anton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designersAnton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designers
Аліна Шепшелей
 

What's hot (20)

Using Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge InteractiveUsing Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge Interactive
 
201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english
 
Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21
 
JAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great MigrationJAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great Migration
 
ReviewNinja OSCON
ReviewNinja OSCONReviewNinja OSCON
ReviewNinja OSCON
 
Story of LeSS by Bas Vodde
Story of LeSS by Bas VoddeStory of LeSS by Bas Vodde
Story of LeSS by Bas Vodde
 
Android Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG FirenzeAndroid Wear CodeLab - GDG Firenze
Android Wear CodeLab - GDG Firenze
 
Bas Vodde - The story of LEsS
Bas Vodde - The story of LEsSBas Vodde - The story of LEsS
Bas Vodde - The story of LEsS
 
Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.
 
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
 
How to improve quality of product in an agile environmemt madhur kathuria
How to improve quality of product in an agile environmemt madhur kathuriaHow to improve quality of product in an agile environmemt madhur kathuria
How to improve quality of product in an agile environmemt madhur kathuria
 
Ant Unit Your Functional Test
Ant Unit Your Functional TestAnt Unit Your Functional Test
Ant Unit Your Functional Test
 
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
如何透過 Golang 與 Heroku 來一鍵部署 臉書機器人與 Line Bot
 
Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014
Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014
Code Matters - Eclipse Hackers Git Guide - EclipseCon France 2014
 
componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+componentDidCatch and Error Boundaries in React v16+
componentDidCatch and Error Boundaries in React v16+
 
Paving roads
Paving roadsPaving roads
Paving roads
 
Appium testing
Appium testingAppium testing
Appium testing
 
Brightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course ContentBrightspace Ignite Tennessee 2015 - Version Control for Course Content
Brightspace Ignite Tennessee 2015 - Version Control for Course Content
 
Anton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designersAnton Parkhomenko Boost your design workflow or git rebase for designers
Anton Parkhomenko Boost your design workflow or git rebase for designers
 

Similar to JUnit 5 Extensions

JUnit 5: The new Testing Framework for Java and Platform for the JVM
JUnit 5: The new Testing Framework for Java and Platform for the JVMJUnit 5: The new Testing Framework for Java and Platform for the JVM
JUnit 5: The new Testing Framework for Java and Platform for the JVM
Marc Philipp
 
JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019
Sam Brannen
 
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
Sam Brannen
 
JUnit 5 — New Opportunities for Testing on the JVM
JUnit 5 — New Opportunities for Testing on the JVMJUnit 5 — New Opportunities for Testing on the JVM
JUnit 5 — New Opportunities for Testing on the JVM
VMware Tanzu
 
Effective Application State Management (@DevCamp2017)
Effective Application State Management (@DevCamp2017)Effective Application State Management (@DevCamp2017)
Effective Application State Management (@DevCamp2017)
Oliver Häger
 
JUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVMJUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVM
Sam Brannen
 
Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023
Scott Keck-Warren
 
JUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyondJUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyond
Sam Brannen
 
From crappy and classy
From crappy and classyFrom crappy and classy
From crappy and classy
Gil Zilberfeld
 
Wordcamp Kanpur 2017
Wordcamp Kanpur 2017Wordcamp Kanpur 2017
Wordcamp Kanpur 2017
Marius Cristea
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsShekhar Gulati
 
Best practices in coding for beginners
Best practices in coding for beginnersBest practices in coding for beginners
Best practices in coding for beginners
Miguel González-Fierro
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"
Sigma Software
 
Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -
Naoki Watanabe
 
Exploring the Google Analytics API
Exploring the Google Analytics APIExploring the Google Analytics API
Exploring the Google Analytics API
Vanessa Sabino
 
Shifting Left: The Top 5 Reasons to Test APIs and Components Early
Shifting Left: The Top 5 Reasons to Test APIs and Components EarlyShifting Left: The Top 5 Reasons to Test APIs and Components Early
Shifting Left: The Top 5 Reasons to Test APIs and Components Early
Neotys
 
Put an end to regression with codeception testing
Put an end to regression with codeception testingPut an end to regression with codeception testing
Put an end to regression with codeception testing
Joe Ferguson
 
QA Fest 2019. Михаил Чуб. Test Automation Сonsultancy
QA Fest 2019. Михаил Чуб. Test Automation СonsultancyQA Fest 2019. Михаил Чуб. Test Automation Сonsultancy
QA Fest 2019. Михаил Чуб. Test Automation Сonsultancy
QAFest
 
5 steps for successful automation with Hiptest
5 steps for  successful automation with Hiptest5 steps for  successful automation with Hiptest
5 steps for successful automation with Hiptest
Community Manager @Hiptest
 
How_to_create_modular_microservice_test_projects.pdf
How_to_create_modular_microservice_test_projects.pdfHow_to_create_modular_microservice_test_projects.pdf
How_to_create_modular_microservice_test_projects.pdf
skimorod
 

Similar to JUnit 5 Extensions (20)

JUnit 5: The new Testing Framework for Java and Platform for the JVM
JUnit 5: The new Testing Framework for Java and Platform for the JVMJUnit 5: The new Testing Framework for Java and Platform for the JVM
JUnit 5: The new Testing Framework for Java and Platform for the JVM
 
JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019
 
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
 
JUnit 5 — New Opportunities for Testing on the JVM
JUnit 5 — New Opportunities for Testing on the JVMJUnit 5 — New Opportunities for Testing on the JVM
JUnit 5 — New Opportunities for Testing on the JVM
 
Effective Application State Management (@DevCamp2017)
Effective Application State Management (@DevCamp2017)Effective Application State Management (@DevCamp2017)
Effective Application State Management (@DevCamp2017)
 
JUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVMJUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVM
 
Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023
 
JUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyondJUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyond
 
From crappy and classy
From crappy and classyFrom crappy and classy
From crappy and classy
 
Wordcamp Kanpur 2017
Wordcamp Kanpur 2017Wordcamp Kanpur 2017
Wordcamp Kanpur 2017
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular js
 
Best practices in coding for beginners
Best practices in coding for beginnersBest practices in coding for beginners
Best practices in coding for beginners
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"
 
Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -Programming Lecture 2nd - Flask and Heroku in Python -
Programming Lecture 2nd - Flask and Heroku in Python -
 
Exploring the Google Analytics API
Exploring the Google Analytics APIExploring the Google Analytics API
Exploring the Google Analytics API
 
Shifting Left: The Top 5 Reasons to Test APIs and Components Early
Shifting Left: The Top 5 Reasons to Test APIs and Components EarlyShifting Left: The Top 5 Reasons to Test APIs and Components Early
Shifting Left: The Top 5 Reasons to Test APIs and Components Early
 
Put an end to regression with codeception testing
Put an end to regression with codeception testingPut an end to regression with codeception testing
Put an end to regression with codeception testing
 
QA Fest 2019. Михаил Чуб. Test Automation Сonsultancy
QA Fest 2019. Михаил Чуб. Test Automation СonsultancyQA Fest 2019. Михаил Чуб. Test Automation Сonsultancy
QA Fest 2019. Михаил Чуб. Test Automation Сonsultancy
 
5 steps for successful automation with Hiptest
5 steps for  successful automation with Hiptest5 steps for  successful automation with Hiptest
5 steps for successful automation with Hiptest
 
How_to_create_modular_microservice_test_projects.pdf
How_to_create_modular_microservice_test_projects.pdfHow_to_create_modular_microservice_test_projects.pdf
How_to_create_modular_microservice_test_projects.pdf
 

Recently uploaded

Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
manasideore6
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
ydteq
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
AhmedHussein950959
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
ankuprajapati0525
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
Divya Somashekar
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
TeeVichai
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
Jayaprasanna4
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Sreedhar Chowdam
 

Recently uploaded (20)

Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
 

JUnit 5 Extensions