SlideShare a Scribd company logo
1 of 55
Download to read offline
SCAFFOLDING WITH JMOCK
Software Engineering Class
Valerio Maggio, Ph.D.
valerio.maggio@unina.it
Prof.Adriano Peron
June 6, 2013
EXERCISE 1
Calculator
A BIGTHANKYOU GOESTO..
Luciano Conte
Vittorio Parrella
Marco Zeuli
CALCULATOR CLASS
• Requirements:
• Input numbers cannot have
more than 5 digits;
• The calculator can remember
a given (unique) number;
• Only non-negative numbers
are allowed.
• In case of negative numbers,
an exception is thrown!
Calculator
+ add (double augend, double addend): double
+ subtract (double minuend, double subtrahend): double
+ multiply (double multiplicand, double multiplier): double
+ divide (double dividend, double divisor): double
+ addToMemory(double number): void
+ recallNumber(): double
- memory: double
+ MAX_DIGITS_LEN: int = 5 <<final>> <<static>>
EXERCISE 1I
Stack
STACK: LIFO QUEUE
Stack
<<constructor>>
+ Stack(capacity: int)
+ pop(): Process
+ push(Process p): void
Process
+ getName():String
+ setName(String n): void
+getPid(): Integer
+ setPid(Integer pid): void
+getPriority():Integer
+setPriority(Integer p): void
- name: String
- pid: Integer
- priority: Integer (default=-1)
*1
_list
BRIEF RECAP OF:
“PROGRAMMING CLASS”
FIFO QUEUE
enqueue()
BRIEF RECAP OF:
“PROGRAMMING CLASS”
FIFO QUEUE
enqueue()
BRIEF RECAP OF:
“PROGRAMMING CLASS”
FIFO QUEUE
enqueue() dequeue()
BRIEF RECAP OF:
“PROGRAMMING CLASS”
FIFO QUEUE
enqueue() dequeue()
BRIEF RECAP OF:
“PROGRAMMING CLASS”
enqueue() dequeue()
LIFO QUEUE
BRIEF RECAP OF:
“PROGRAMMING CLASS”
enqueue() dequeue()
LIFO QUEUE
BRIEF RECAP OF:
“PROGRAMMING CLASS”
enqueue() dequeue()
LIFO QUEUE
BRIEF RECAP OF:
“PROGRAMMING CLASS”
enqueue() dequeue()
LIFO QUEUE
+ enqueue(Process p):void
+ dequeue():Process
<<abstract>>
Queue
*1
_list
Process
FIFOQueue LIFOQueue PriorityQueue
+ addProcess(Process p, Queue q):void
+ schedule(Queue q):Process
Scheduler
1 *
_queues
Q: How would you test Scheduler? Remember: Unit tests run in isolation!
TEST SCAFFOLDING
INTEGRATIONTESTING
INTEGRATIONTESTING
INTEGRATIONTESTING
PROBLEM
• Integrate multiple components implies to decide in which
order classes and subsystems should be integrated and tested
• CITO Problem
• Class IntegrationTesting Order Problem
• Solution:
• Topological sort of dependency graph
INTEGRATIONTESTING
EXAMPLE
ClassA ClassB
ClassC Subsystem
ClassA ClassB
ClassC Subsystem
INTEGRATIONTESTING
EXAMPLE
ClassA ClassB
ClassC Subsystem
ClassA ClassB
ClassC Subsystem
TESTING IN ISOLATION
Testing in Isolation benefits!
TESTING IN ISOLATION
Test code that have not been written
Testing in Isolation benefits!
TESTING IN ISOLATION
Test only a single method (behavior) without
side effects from other objects
Test code that have not been written
Testing in Isolation benefits!
SCHEDULER EXAMPLE
+ enqueue(Process p):void
+ dequeue():Process
<<abstract>>
Queue
*1
_list
Process
FIFOQueue LIFOQueue PriorityQueue
+ addProcess(Process p, Queue q):void
+ schedule(Queue q):Process
Scheduler
1 *
_queues
s:Schedulerclient
addProcess(P, Q)
q:Queue
enqueue(P)
SCHEDULER@addProcess
SOLUTION WITH STUBS
@Marco Zeuli
KEY IDEAS
• Wrap all the details of Code
• (sort of) Simulation
• Mocks do not provide our own implementation of the
components we'd like to swap in
• Main Difference:
• Mocks test behavior and interactions between components
• Stubs replace heavyweight process that are not relevant to
a particular test with simple implementations
MOCK OBJECTS
• Powerful way to implement BehaviorVerification
• while avoidingTest Code Duplication between similar tests.
• It works by delegating the job of verifying the indirect outputs
of the SUT
• Important Note: Design for Mockability
• Dependency Injection Pattern
NAMING CONFUSION
• Unfortunately, while two components are quite distinct, they're
used interchangeably.
• Example: spring-mock package
• If we were to be stricter in terms of naming, stub objects
defined previously are test doubles
• Test Doubles, Stubs, Mocks, Fake Objects… how could we
work it out ?
TEST DOUBLE PATTERN
• Q: How can we verify logic independently when code it depends on
is unusable?
• Q1: How we can avoid slow tests ?
• A:We replace a component on which the SUT depends with a “test-
specific equivalent.”
TEST STUB PATTERN
• Q: How can we verify logic independently when it depends
on indirect inputs from other software components ?
• A:We replace a real objects with a test-specific object that
feeds the desired inputs into the SUT
MOCKS OBJECTS
• Q: How can we implement BehaviorVerification for indirect
outputs of the SUT ?
• A:We replace an object on which the SUT depends on with
a test-specific object that verifies it is being used correctly by
the SUT.
MOCK LIBRARIES
• Two main design philosophy:
• DSL Libraries
• Record/Replay Models Libraries
Record Replay Frameworks: First
train mocks and then verify expectations
DSL Frameworks:
•Domain Specific Languages
•Specifications embedded in “Java” Code
MOCK LIBRARIES
• Two main design philosophy:
• DSL Libraries
• Record/Replay Models Libraries
Record Replay Frameworks: First
train mocks and then verify expectations
DSL Frameworks:
•Domain Specific Languages
•Specifications embedded in “Java” Code
SOLUTION WITH JMOCK
JMOCK MAIN FEATURES
JMOCK FEATURES (INTRO)
• JMock previous versions required subclassing
• Not so smart in testing
• Now directly integrated with Junit4
• JMock tests requires more typing
• JMock API is extensible
JMOCK FEATURES
• JMock syntax relies heavily on chained method calls
• Sometimes difficult to decipher and to debug
• Common Patterns:
invocation-count(mockobject).method(arguments);
inSequence(sequence-name);
when(state-machine.is(state-name));
will(action);
then(state-machine.is(new-state name));
1.TEST FIXTURE
• Mockery represents the context
• JUnitRuleMockery replaces the @RunWith(JMock.class)
annotation
• JUnit4Mockery reports expectation failures as JUnit4 test failures
2. CREATE MOCK OBJECTS
• References (fields andVars) have to be final
• Accessible from Anonymous Expectations
3.TESTS WITH EXPECTATIONS
• A test sets up it expectations in one or more expectation
blocks
• An expectation block can contain any number of
expectations
• Expectation blocks can be interleaved with calls to the
code under test.
3.TESTS WITH EXPECTATIONS
• Expectations have the following structure:
invocation-count(mockobject).method(arguments);
inSequence(sequence-name);
when(state-machine.is(state-name));
will(action);
then(state-machine.is(new-state name));
WHAT ARETHOSE DOUBLE BRACES?
• Anonymous subclass of Expectations
• Baroque structure to provide a scope for setting expectations
• Collection of expectation components
• Is an example of Builder Pattern
• Improves code completion
COOKBOOK: EXPECT A
SEQUENCE OF INVOCATIONS
Expect that a sequence of method calls has
been executed in the right order
@Marco Zeuli
@Marco Zeuli
EXPECTASEQUENCE
OFINVOCATIONS
EXERCISE III
Roman Calculator
A SIMPLE EXAMPLE:
THE ROMAN CALCULATOR
Everyone always uses the same one, which is a Roman
Numerals, but I’m going to give it a little twist, which is that I’ll try
and use a Roman Numeral calculator - not a Roman Numeral
converter [...]
Source: https://github.com/hjwp/tdd-roman-numeral-calculator
PYTHON
• Language for geeks
• Multi-paradigm
• StrongTyped
• DynamicTyped
• Language for “serious” guys
• Object Oriented Language
• StrongTyped
• StaticTyped
JAVAvs
DUCKTYPING
•Walks like a duck?
•Quacks like a duck?
•Yes, It’s a duck!
def half (n):
return n/2.0
Q: What is the type of
the variable n
ISTHERE SOMEONETHAT
(REALLY) USES PYTHON?
• IBM, Google, Microsoft, Sun, HP,
NASA, Industrial Light and Magic
• Google it!
• site:microsoft.com python
• You’ll get more than 9k hits
CONTACTS
MAIL:
valerio.maggio@unina.it
http://wpage.unina.it/valerio.maggio
REFERENCES (1)
Growing Object-Oriented
Software, Guided ByTests
Freeman and Pryce,Addison
Wesley 2010
JMock Project WebSite
(http://jmock.org)
REFERENCES (II)
xUnitTest Patterns:
RefactoringTest Code
Meszaros G., Pearson
Education 2007

More Related Content

What's hot

Google mock for dummies
Google mock for dummiesGoogle mock for dummies
Google mock for dummiesHarry Potter
 
TDD CrashCourse Part3: TDD Techniques
TDD CrashCourse Part3: TDD TechniquesTDD CrashCourse Part3: TDD Techniques
TDD CrashCourse Part3: TDD TechniquesDavid Rodenas
 
關於測試,我說的其實是......
關於測試,我說的其實是......關於測試,我說的其實是......
關於測試,我說的其實是......hugo lu
 
Dimensional performance benchmarking of SQL
Dimensional performance benchmarking of SQLDimensional performance benchmarking of SQL
Dimensional performance benchmarking of SQLBrendan Furey
 
Debug - MITX60012016-V005100
Debug - MITX60012016-V005100Debug - MITX60012016-V005100
Debug - MITX60012016-V005100Ha Nguyen
 
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
 
Presentation_C++UnitTest
Presentation_C++UnitTestPresentation_C++UnitTest
Presentation_C++UnitTestRaihan Masud
 
SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8Chaitanya Ganoo
 
Beyond PITS, Functional Principles for Software Architecture
Beyond PITS, Functional Principles for Software ArchitectureBeyond PITS, Functional Principles for Software Architecture
Beyond PITS, Functional Principles for Software ArchitectureJayaram Sankaranarayanan
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static AnalysisElena Laskavaia
 

What's hot (19)

Python unit testing
Python unit testingPython unit testing
Python unit testing
 
Google mock for dummies
Google mock for dummiesGoogle mock for dummies
Google mock for dummies
 
TDD CrashCourse Part3: TDD Techniques
TDD CrashCourse Part3: TDD TechniquesTDD CrashCourse Part3: TDD Techniques
TDD CrashCourse Part3: TDD Techniques
 
關於測試,我說的其實是......
關於測試,我說的其實是......關於測試,我說的其實是......
關於測試,我說的其實是......
 
Dimensional performance benchmarking of SQL
Dimensional performance benchmarking of SQLDimensional performance benchmarking of SQL
Dimensional performance benchmarking of SQL
 
Klee introduction
Klee  introductionKlee  introduction
Klee introduction
 
Debug - MITX60012016-V005100
Debug - MITX60012016-V005100Debug - MITX60012016-V005100
Debug - MITX60012016-V005100
 
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++
 
Symbolic Execution And KLEE
Symbolic Execution And KLEESymbolic Execution And KLEE
Symbolic Execution And KLEE
 
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testing
 
Presentation_C++UnitTest
Presentation_C++UnitTestPresentation_C++UnitTest
Presentation_C++UnitTest
 
SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8
 
Beyond PITS, Functional Principles for Software Architecture
Beyond PITS, Functional Principles for Software ArchitectureBeyond PITS, Functional Principles for Software Architecture
Beyond PITS, Functional Principles for Software Architecture
 
Java 8 new features
Java 8 new featuresJava 8 new features
Java 8 new features
 
Python testing
Python  testingPython  testing
Python testing
 
Java8 features
Java8 featuresJava8 features
Java8 features
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static Analysis
 
Tdd & unit test
Tdd & unit testTdd & unit test
Tdd & unit test
 
Core java day4
Core java day4Core java day4
Core java day4
 

Viewers also liked

Viewers also liked (6)

Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Unit testing and scaffolding
Unit testing and scaffoldingUnit testing and scaffolding
Unit testing and scaffolding
 
Software testing methods, levels and types
Software testing methods, levels and typesSoftware testing methods, levels and types
Software testing methods, levels and types
 
Manual testing ppt
Manual testing pptManual testing ppt
Manual testing ppt
 
Software Testing Fundamentals
Software Testing FundamentalsSoftware Testing Fundamentals
Software Testing Fundamentals
 
Software testing ppt
Software testing pptSoftware testing ppt
Software testing ppt
 

Similar to Scaffolding Software Tests with JMock

A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)Thierry Gayet
 
How and what to unit test
How and what to unit testHow and what to unit test
How and what to unit testEugenio Lentini
 
CBDW2014 - Behavior Driven Development with TestBox
CBDW2014 - Behavior Driven Development with TestBoxCBDW2014 - Behavior Driven Development with TestBox
CBDW2014 - Behavior Driven Development with TestBoxOrtus Solutions, Corp
 
Unit Testing Full@
Unit Testing Full@Unit Testing Full@
Unit Testing Full@Alex Borsuk
 
Database development unit test with tSQLt
Database development unit test with tSQLtDatabase development unit test with tSQLt
Database development unit test with tSQLtSergio Govoni
 
Qt test framework
Qt test frameworkQt test framework
Qt test frameworkICS
 
VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)Rob Hale
 
System verilog important
System verilog importantSystem verilog important
System verilog importantelumalai7
 
Devday2016 real unittestingwithmockframework-phatvu
Devday2016 real unittestingwithmockframework-phatvuDevday2016 real unittestingwithmockframework-phatvu
Devday2016 real unittestingwithmockframework-phatvuPhat VU
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0Michael Vorburger
 
Building a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management ApplicationBuilding a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management ApplicationJonathan Katz
 
Software Engineering - RS3
Software Engineering - RS3Software Engineering - RS3
Software Engineering - RS3AtakanAral
 
Unit Testing in R with Testthat - HRUG
Unit Testing in R with Testthat - HRUGUnit Testing in R with Testthat - HRUG
Unit Testing in R with Testthat - HRUGegoodwintx
 

Similar to Scaffolding Software Tests with JMock (20)

Unit Testing
Unit TestingUnit Testing
Unit Testing
 
A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)A la découverte des google/test (aka gtest)
A la découverte des google/test (aka gtest)
 
How and what to unit test
How and what to unit testHow and what to unit test
How and what to unit test
 
CBDW2014 - Behavior Driven Development with TestBox
CBDW2014 - Behavior Driven Development with TestBoxCBDW2014 - Behavior Driven Development with TestBox
CBDW2014 - Behavior Driven Development with TestBox
 
Unit Testing Full@
Unit Testing Full@Unit Testing Full@
Unit Testing Full@
 
Grails Spock Testing
Grails Spock TestingGrails Spock Testing
Grails Spock Testing
 
Codemotion 2015 spock_workshop
Codemotion 2015 spock_workshopCodemotion 2015 spock_workshop
Codemotion 2015 spock_workshop
 
Database development unit test with tSQLt
Database development unit test with tSQLtDatabase development unit test with tSQLt
Database development unit test with tSQLt
 
Qt test framework
Qt test frameworkQt test framework
Qt test framework
 
AOP on Android
AOP on AndroidAOP on Android
AOP on Android
 
VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)VT.NET 20160411: An Intro to Test Driven Development (TDD)
VT.NET 20160411: An Intro to Test Driven Development (TDD)
 
System verilog important
System verilog importantSystem verilog important
System verilog important
 
Devday2016 real unittestingwithmockframework-phatvu
Devday2016 real unittestingwithmockframework-phatvuDevday2016 real unittestingwithmockframework-phatvu
Devday2016 real unittestingwithmockframework-phatvu
 
Ch11lect1 ud
Ch11lect1 udCh11lect1 ud
Ch11lect1 ud
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0
 
Building a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management ApplicationBuilding a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management Application
 
Unit tests and TDD
Unit tests and TDDUnit tests and TDD
Unit tests and TDD
 
Software Engineering - RS3
Software Engineering - RS3Software Engineering - RS3
Software Engineering - RS3
 
Test box bdd
Test box bddTest box bdd
Test box bdd
 
Unit Testing in R with Testthat - HRUG
Unit Testing in R with Testthat - HRUGUnit Testing in R with Testthat - HRUG
Unit Testing in R with Testthat - HRUG
 

More from Valerio Maggio

Unsupervised Machine Learning for clone detection
Unsupervised Machine Learning for clone detectionUnsupervised Machine Learning for clone detection
Unsupervised Machine Learning for clone detectionValerio Maggio
 
Improving Software Maintenance using Unsupervised Machine Learning techniques
Improving Software Maintenance using Unsupervised Machine Learning techniquesImproving Software Maintenance using Unsupervised Machine Learning techniques
Improving Software Maintenance using Unsupervised Machine Learning techniquesValerio Maggio
 
Number Crunching in Python
Number Crunching in PythonNumber Crunching in Python
Number Crunching in PythonValerio Maggio
 
Clone detection in Python
Clone detection in PythonClone detection in Python
Clone detection in PythonValerio Maggio
 
Machine Learning for Software Maintainability
Machine Learning for Software MaintainabilityMachine Learning for Software Maintainability
Machine Learning for Software MaintainabilityValerio Maggio
 
LINSEN an efficient approach to split identifiers and expand abbreviations
LINSEN an efficient approach to split identifiers and expand abbreviationsLINSEN an efficient approach to split identifiers and expand abbreviations
LINSEN an efficient approach to split identifiers and expand abbreviationsValerio Maggio
 
A Tree Kernel based approach for clone detection
A Tree Kernel based approach for clone detectionA Tree Kernel based approach for clone detection
A Tree Kernel based approach for clone detectionValerio Maggio
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeValerio Maggio
 
Unit testing with Junit
Unit testing with JunitUnit testing with Junit
Unit testing with JunitValerio Maggio
 
Design patterns and Refactoring
Design patterns and RefactoringDesign patterns and Refactoring
Design patterns and RefactoringValerio Maggio
 

More from Valerio Maggio (12)

Unsupervised Machine Learning for clone detection
Unsupervised Machine Learning for clone detectionUnsupervised Machine Learning for clone detection
Unsupervised Machine Learning for clone detection
 
Improving Software Maintenance using Unsupervised Machine Learning techniques
Improving Software Maintenance using Unsupervised Machine Learning techniquesImproving Software Maintenance using Unsupervised Machine Learning techniques
Improving Software Maintenance using Unsupervised Machine Learning techniques
 
Number Crunching in Python
Number Crunching in PythonNumber Crunching in Python
Number Crunching in Python
 
Clone detection in Python
Clone detection in PythonClone detection in Python
Clone detection in Python
 
Machine Learning for Software Maintainability
Machine Learning for Software MaintainabilityMachine Learning for Software Maintainability
Machine Learning for Software Maintainability
 
LINSEN an efficient approach to split identifiers and expand abbreviations
LINSEN an efficient approach to split identifiers and expand abbreviationsLINSEN an efficient approach to split identifiers and expand abbreviations
LINSEN an efficient approach to split identifiers and expand abbreviations
 
A Tree Kernel based approach for clone detection
A Tree Kernel based approach for clone detectionA Tree Kernel based approach for clone detection
A Tree Kernel based approach for clone detection
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing code
 
Junit in action
Junit in actionJunit in action
Junit in action
 
Unit testing with Junit
Unit testing with JunitUnit testing with Junit
Unit testing with Junit
 
Design patterns and Refactoring
Design patterns and RefactoringDesign patterns and Refactoring
Design patterns and Refactoring
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 

Recently uploaded

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

Scaffolding Software Tests with JMock