SlideShare a Scribd company logo
1 of 86
Download to read offline
kgolev.com@kotseto
JUnit 5
Kostadin Golev
CTO @ Rewards Labs
The Next Generation
kgolev.com@kotseto
kgolev.com@kotseto
Why JUnit 5?
Where Is It?
Writing Tests
Platform For The JVM
Running Along JUnit 3 & 4
Important New Features
IDE & Tool Support
kgolev.com@kotseto
kgolev.com@kotseto
Issues with JUnit 4
kgolev.com@kotseto
kgolev.com@kotseto
How bad?
Let’s rename some private variables to find out!
kgolev.com@kotseto
kgolev.com@kotseto
4.11:
org.junit.ComparisonFailure:
expected:<[1]L> but was:<[2]L>
assertEquals(1, 2)
kgolev.com@kotseto
4.12-beta-1:
org.junit.ComparisonFailure:
expected: null<null> but was: null<null>
assertEquals(1, 2)
kgolev.com@kotseto
Extension mechanism
Runner
@RunWith(SpringJUnit4ClassRunner.class)
Rule
@Rule ExpectedException thrown = none()
kgolev.com@kotseto
Powerful Composable
Runner Rule
kgolev.com@kotseto
Extension mechanism
Powerful Composable?
Runner Rule
kgolev.com@kotseto
kgolev.com@kotseto
Why JUnit 5?
Where Is It?
Writing Tests
Platform For The JVM
Running Along JUnit 3 & 4
Important New Features
IDE & Tool Support
kgolev.com@kotseto
Will this work?
kgolev.com@kotseto
There is no single JUnit 5
(JAR)
kgolev.com@kotseto
Not one big fat jar
We have more then ten now, in three groups
kgolev.com@kotseto
JUnit Platform
+
JUnit Jupiter
+
JUnit Vintage
JUnit 5
kgolev.com@kotseto
JUnit Platform
kgolev.com@kotseto
JUnit Jupiter
JUnit Vintage
kgolev.com@kotseto
Why JUnit 5?
Where Is It?
Writing Tests
Platform For The JVM
Running Along JUnit 3 & 4
Important New Features
IDE & Tool Support
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
@Test
void exception() {
RuntimeException thrown =
assertThrows(RuntimeException.class, () ->
library.throwRuntimeException("message")
);
assertEquals("message", thrown.getMessage());
}
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
What about Runners and
Rules?
kgolev.com@kotseto
We wrote some tests!
How do we run them?
kgolev.com@kotseto
Why JUnit 5?
Where Is It?
Writing Tests
Platform For The JVM
Running Along JUnit 3 & 4
Important New Features
IDE & Tool Support
kgolev.com@kotseto
Some History
Or how JUnit 5 team discovered they were building a
platform
kgolev.com@kotseto
It started as a big fat jar
Then everything got split in small, focused modules
kgolev.com@kotseto
Launcher
<<interface>>
Engine
Engine Impl
Jupiter API
implements
JUnit Platform
JUnit Jupiter
kgolev.com@kotseto
Launcher
<<interface>>
Engine
JUnit Platform
kgolev.com@kotseto
<<interface>>
Engine
Engine Implementation
implements
JUnit Platform
JUnit Jupiter
kgolev.com@kotseto
Jupiter API
JUnit Jupiter
@Test
@BeforeEach
assertEquals()
…
kgolev.com@kotseto
testRuntime “org.junit.jupiter:junit-jupiter-engine:5.0.0”
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
…
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.0.0</version>
</dependency>
</dependencies>
</plugin>
kgolev.com@kotseto
Why JUnit 5?
Where Is It?
Writing Tests
Platform For The JVM
Running Along JUnit 3&4
Important New Features
IDE & Tool Support
kgolev.com@kotseto
You can still run your
JUnit 3&4 tests
But it will not be JUnit 3&4 running them
kgolev.com@kotseto
Launcher
<<interface>>
Engine
Vintage Engine Impl
JUnit 3&4 API
implements
JUnit Platform
JUnit Vintage
kgolev.com@kotseto
JUnit Platform
JUnit Jupiter JUnit Vintage
JUnit5 tests JUnit4 tests
kgolev.com@kotseto
testRuntime “org.junit.jupiter:junit-jupiter-engine:5.0.0”
testRuntime “org.junit.vintage:junit-vintage-engine:5.0.0”
kgolev.com@kotseto
Platform for the JVM
Many Developers implemented their own engines,
reusing JUnit5 tool integration
kgolev.com@kotseto
Not only for Java
Test Engine implementations exist for
Scala, Kotlin and Groovy
kgolev.com@kotseto
Why JUnit 5?
Where Is It?
Writing Tests
Platform For The JVM
Running Along JUnit 3 & 4
Important New Features
IDE & Tool Support
kgolev.com@kotseto
assertAll(…)
kgolev.com@kotseto
assertEquals(1, 2);
assertEquals("String", "Another String");
org.opentest4j.AssertionFailedError:
Expected :1
Actual :2
kgolev.com@kotseto
assertAll(
() -> assertEquals(1, 2),
() -> assertEquals("String", “Another String")
)
org.opentest4j.MultipleFailuresError: Multiple Failures (2 failures)
expected: <1> but was: <2>
expected: <String> but was: <Another String>
kgolev.com@kotseto
What about Runners and
Rules (again)?
JUnit5 Extension model
kgolev.com@kotseto
@ExtendWith
kgolev.com@kotseto
kgolev.com@kotseto
Composable & Powerful
Use as many as you want
whenever you want them
kgolev.com@kotseto
@ExtendWith(SpringExtension.class)
@ExtendWith(MockitoExtension.class)
class SpringTest {
@Autowired
SpringComponent component;
@Mock
Dependency mocked;
kgolev.com@kotseto
class ParameterInTestMethods {
@Test
@ExtendWith(MockitoExtension.class)
void test(@Mock Dependency mocked) {
…
}
kgolev.com@kotseto
kgolev.com@kotseto
public class MockitoExtension implements
TestInstancePostProcessor {
@Override
public void postProcessTestInstance(
Object testInstance,
ExtensionContext context) {
MockitoAnnotations.initMocks(testInstance);
}
}
kgolev.com@kotseto
Some official extensions
SpringExtension - since Spring 5.0 (Sep 2017)
MockitoExtension - since 2.17.0 (Mar 2018)
kgolev.com@kotseto
@Nested
@DisplayName
kgolev.com@kotseto
public class Library {
private Books books;
public Library(Books books) {
this.books = books;
}
public void addBook(Book book) {
// do something with books
}
}
kgolev.com@kotseto
@Test
void whenBookExistsThenIncrementAmount() {}
@Test
void whenBookExistsThenCheckAmountMoreThenN() {}
@Test
void whenBookDoesNotExistThenCreateBook() {}
@Test
void whenBookDoesNotExistThenSendNewBookNotification() {}
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
Tests are often a tree,
not a list
kgolev.com@kotseto
kgolev.com@kotseto
@DisplayName("Book is added to library")
class BookAddedTest {


@DisplayName("when book exists")
@Nested
class whenBookExists {
@DisplayName("amount++")
@Test
void incrementAmount() {}
@DisplayName("check amount > limit")
@Test
void checkAmountMoreThenLimit() {}
}
. . .
}
kgolev.com@kotseto
kgolev.com@kotseto
@ParameterizedTest
kgolev.com@kotseto
testCompile “org.junit.jupiter:junit-jupiter-params:5.0.0"
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.0.0</version>
<scope>test</scope>
</dependency>
WARNING!
WARNING!
WARNING!
kgolev.com@kotseto
@Test
void strIsLessThenTenChar() {
int value = "str".length();
assertTrue(value < 10);
}
@Test
void StringIsLessThenTenChar() {
int value = "String".length();
assertTrue(value < 10);
}
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
kgolev.com@kotseto
@ValueSource(strings = {“str”, “String”})
@ValueSource(ints = {1, 3, 7, 9})
@EnumSource(SomeEnum.class)
@CsvSource({"1, 1", "2, 4", "4, 16”})
@CsvFileSource(resources=“testData.csv”)
kgolev.com@kotseto
@MethodSource(names=“stringAndIntProvider")
…
static Stream<Arguments> stringAndIntProvider() {
return Stream.of(
ObjectArrayArguments.create("foo", 3),
ObjectArrayArguments.create("foobar", 6)
);
}
kgolev.com@kotseto
enum Status {
OK, INVALID_NAME, INVALID_DATE, …
}
@ParameterizedTest
@EnumSource(value = Status.class, mode = EXCLUDE,
names = “OK")
void should_return_error_when_not_OK(Status status) {
…
kgolev.com@kotseto
kgolev.com@kotseto
Why JUnit 5?
Where Is It?
Writing Tests
Platform For The JVM
Running Along JUnit 3 & 4
Important New Features
IDE & Tool Support
kgolev.com@kotseto
Also supported pre-GA releases
Since Oxygen 4.7.1
kgolev.com@kotseto
Surefire provider
Not native yet
Native support since 4.6
Plugin
kgolev.com@kotseto
testCompile "org.junit.jupiter:junit-jupiter-api:5.0.0"
testRuntime "org.junit.jupiter:junit-jupiter-engine:5.0.0"
testCompile "org.junit.jupiter:junit-jupiter-params:5.0.0"
…
test {
useJUnitPlatform {
includeEngines 'junit-jupiter', 'junit-vintage'
}
failFast = true
}
kgolev.com@kotseto
junit.org/junit5
kgolev.com@kotseto
Questions?
@kotseto
kgolev.com/talks/junit5

More Related Content

What's hot

Unit Testing RPG with JUnit
Unit Testing RPG with JUnitUnit Testing RPG with JUnit
Unit Testing RPG with JUnitGreg.Helton
 
RPG Program for Unit Testing RPG
RPG Program for Unit Testing RPG RPG Program for Unit Testing RPG
RPG Program for Unit Testing RPG Greg.Helton
 
Interpreter RPG to Java
Interpreter RPG to JavaInterpreter RPG to Java
Interpreter RPG to Javafarerobe
 
Automated testing in Python and beyond
Automated testing in Python and beyondAutomated testing in Python and beyond
Automated testing in Python and beyonddn
 
Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Andrea Francia
 
20111018 boost and gtest
20111018 boost and gtest20111018 boost and gtest
20111018 boost and gtestWill Shen
 
Testing in-python-and-pytest-framework
Testing in-python-and-pytest-frameworkTesting in-python-and-pytest-framework
Testing in-python-and-pytest-frameworkArulalan T
 
Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++Hong Le Van
 
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testingsgleadow
 
Quality of life through Unit Testing
Quality of life through Unit TestingQuality of life through Unit Testing
Quality of life through Unit TestingSian Lerk Lau
 
Presentation_C++UnitTest
Presentation_C++UnitTestPresentation_C++UnitTest
Presentation_C++UnitTestRaihan Masud
 
Quick Tour to Front-End Unit Testing Using Jasmine
Quick Tour to Front-End Unit Testing Using JasmineQuick Tour to Front-End Unit Testing Using Jasmine
Quick Tour to Front-End Unit Testing Using JasmineGil Fink
 
Working Effectively With Legacy Code
Working Effectively With Legacy CodeWorking Effectively With Legacy Code
Working Effectively With Legacy CodeNaresh Jain
 
Software Engineering - RS3
Software Engineering - RS3Software Engineering - RS3
Software Engineering - RS3AtakanAral
 
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 beyondSam Brannen
 
Quickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsQuickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsClare Macrae
 
Google mock for dummies
Google mock for dummiesGoogle mock for dummies
Google mock for dummiesHarry Potter
 

What's hot (20)

Unit Testing RPG with JUnit
Unit Testing RPG with JUnitUnit Testing RPG with JUnit
Unit Testing RPG with JUnit
 
RPG Program for Unit Testing RPG
RPG Program for Unit Testing RPG RPG Program for Unit Testing RPG
RPG Program for Unit Testing RPG
 
Interpreter RPG to Java
Interpreter RPG to JavaInterpreter RPG to Java
Interpreter RPG to Java
 
Automated testing in Python and beyond
Automated testing in Python and beyondAutomated testing in Python and beyond
Automated testing in Python and beyond
 
Modern Python Testing
Modern Python TestingModern Python Testing
Modern Python Testing
 
Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008Google C++ Testing Framework in Visual Studio 2008
Google C++ Testing Framework in Visual Studio 2008
 
20111018 boost and gtest
20111018 boost and gtest20111018 boost and gtest
20111018 boost and gtest
 
Testing in-python-and-pytest-framework
Testing in-python-and-pytest-frameworkTesting in-python-and-pytest-framework
Testing in-python-and-pytest-framework
 
Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++Test driven development and unit testing with examples in C++
Test driven development and unit testing with examples in C++
 
Agile mobile
Agile mobileAgile mobile
Agile mobile
 
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testing
 
Quality of life through Unit Testing
Quality of life through Unit TestingQuality of life through Unit Testing
Quality of life through Unit Testing
 
Python unit testing
Python unit testingPython unit testing
Python unit testing
 
Presentation_C++UnitTest
Presentation_C++UnitTestPresentation_C++UnitTest
Presentation_C++UnitTest
 
Quick Tour to Front-End Unit Testing Using Jasmine
Quick Tour to Front-End Unit Testing Using JasmineQuick Tour to Front-End Unit Testing Using Jasmine
Quick Tour to Front-End Unit Testing Using Jasmine
 
Working Effectively With Legacy Code
Working Effectively With Legacy CodeWorking Effectively With Legacy Code
Working Effectively With Legacy Code
 
Software Engineering - RS3
Software Engineering - RS3Software Engineering - RS3
Software Engineering - RS3
 
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
 
Quickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop ApplicationsQuickly Testing Qt Desktop Applications
Quickly Testing Qt Desktop Applications
 
Google mock for dummies
Google mock for dummiesGoogle mock for dummies
Google mock for dummies
 

Similar to JUnit 5

JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainersSunghyouk Bae
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentSven Peters
 
Desenvolva plugins para o compilador do Java 8
Desenvolva plugins para o compilador do Java 8Desenvolva plugins para o compilador do Java 8
Desenvolva plugins para o compilador do Java 8Marcelo de Castro
 
Unit testing with Spock Framework
Unit testing with Spock FrameworkUnit testing with Spock Framework
Unit testing with Spock FrameworkEugene Dvorkin
 
Boost up your productivity with Kotlin - Liferay Symposium France 2018
Boost up your productivity with Kotlin - Liferay Symposium France 2018Boost up your productivity with Kotlin - Liferay Symposium France 2018
Boost up your productivity with Kotlin - Liferay Symposium France 2018Louis-Guillaume Durand
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9Ivan Krylov
 
Lightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfileLightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfileJosh Juneau
 
Java EE 6 & GlassFish v3: Paving path for the future
Java EE 6 & GlassFish v3: Paving path for the futureJava EE 6 & GlassFish v3: Paving path for the future
Java EE 6 & GlassFish v3: Paving path for the futureArun Gupta
 
Mock cli with Python unittest
Mock cli with Python unittestMock cli with Python unittest
Mock cli with Python unittestSong Jin
 
Java 7 and 8, what does it mean for you
Java 7 and 8, what does it mean for youJava 7 and 8, what does it mean for you
Java 7 and 8, what does it mean for youDmitry Buzdin
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Paul King
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0Michael Vorburger
 
Using java8 for unit testing while being backward compatible
Using java8 for unit testing while being backward compatibleUsing java8 for unit testing while being backward compatible
Using java8 for unit testing while being backward compatibleNikola Petrov
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Boni García
 
Unlocking the Power of Iteration
Unlocking the Power of IterationUnlocking the Power of Iteration
Unlocking the Power of IterationClement Ho
 

Similar to JUnit 5 (20)

Test Dependencies and the Future of Build Acceleration
Test Dependencies and the Future of Build AccelerationTest Dependencies and the Future of Build Acceleration
Test Dependencies and the Future of Build Acceleration
 
JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainers
 
What's New in Groovy 1.6?
What's New in Groovy 1.6?What's New in Groovy 1.6?
What's New in Groovy 1.6?
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your Development
 
Advanced Java Testing
Advanced Java TestingAdvanced Java Testing
Advanced Java Testing
 
Desenvolva plugins para o compilador do Java 8
Desenvolva plugins para o compilador do Java 8Desenvolva plugins para o compilador do Java 8
Desenvolva plugins para o compilador do Java 8
 
Unit testing with Spock Framework
Unit testing with Spock FrameworkUnit testing with Spock Framework
Unit testing with Spock Framework
 
Boost up your productivity with Kotlin - Liferay Symposium France 2018
Boost up your productivity with Kotlin - Liferay Symposium France 2018Boost up your productivity with Kotlin - Liferay Symposium France 2018
Boost up your productivity with Kotlin - Liferay Symposium France 2018
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Junit_.pptx
Junit_.pptxJunit_.pptx
Junit_.pptx
 
Lightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfileLightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfile
 
Java EE 6 & GlassFish v3: Paving path for the future
Java EE 6 & GlassFish v3: Paving path for the futureJava EE 6 & GlassFish v3: Paving path for the future
Java EE 6 & GlassFish v3: Paving path for the future
 
Mock cli with Python unittest
Mock cli with Python unittestMock cli with Python unittest
Mock cli with Python unittest
 
Junit5 brujug
Junit5 brujugJunit5 brujug
Junit5 brujug
 
Java 7 and 8, what does it mean for you
Java 7 and 8, what does it mean for youJava 7 and 8, what does it mean for you
Java 7 and 8, what does it mean for you
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0
 
Using java8 for unit testing while being backward compatible
Using java8 for unit testing while being backward compatibleUsing java8 for unit testing while being backward compatible
Using java8 for unit testing while being backward compatible
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5
 
Unlocking the Power of Iteration
Unlocking the Power of IterationUnlocking the Power of Iteration
Unlocking the Power of Iteration
 

Recently uploaded

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 

Recently uploaded (20)

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 

JUnit 5