Soumettre la recherche
Mettre en ligne
Struggling to Create Maintainable Unit Tests?
•
Télécharger en tant que PPT, PDF
•
2 j'aime
•
3,762 vues
Alistair McKinnell
Suivre
Learn how to create maintainable unit tests by using jMock with Test Data Builders.
Lire moins
Lire la suite
Technologie
Business
Signaler
Partager
Signaler
Partager
1 sur 37
Télécharger maintenant
Recommandé
Introduction to CrossRef for Publishers
Introduction to CrossRef for Publishers
Crossref
Wang Webinar Nov 2015 - LinkedIn
Wang Webinar Nov 2015 - LinkedIn
jwppz
2 6 open_ehr archetypes instructions_actions
2 6 open_ehr archetypes instructions_actions
freshEHR Clinical Informatics Ltd.
Bad test, good test
Bad test, good test
Seb Rose
Junit With Eclipse
Junit With Eclipse
Sunil kumar Mohanty
Pragmatic unittestingwithj unit
Pragmatic unittestingwithj unit
liminescence
10 Principles of Apex Testing
10 Principles of Apex Testing
Salesforce Developers
Junit_.pptx
Junit_.pptx
Suman Sourav
Recommandé
Introduction to CrossRef for Publishers
Introduction to CrossRef for Publishers
Crossref
Wang Webinar Nov 2015 - LinkedIn
Wang Webinar Nov 2015 - LinkedIn
jwppz
2 6 open_ehr archetypes instructions_actions
2 6 open_ehr archetypes instructions_actions
freshEHR Clinical Informatics Ltd.
Bad test, good test
Bad test, good test
Seb Rose
Junit With Eclipse
Junit With Eclipse
Sunil kumar Mohanty
Pragmatic unittestingwithj unit
Pragmatic unittestingwithj unit
liminescence
10 Principles of Apex Testing
10 Principles of Apex Testing
Salesforce Developers
Junit_.pptx
Junit_.pptx
Suman Sourav
Junit4&testng presentation
Junit4&testng presentation
Sanjib Dhar
Security Testing
Security Testing
Kiran Kumar
Writing Test Cases with PHPUnit
Writing Test Cases with PHPUnit
Shouvik Chatterjee
Selenium Webdriver with data driven framework
Selenium Webdriver with data driven framework
David Rajah Selvaraj
Unit testing with JUnit
Unit testing with JUnit
Thomas Zimmermann
33rd Degree 2013, Bad Tests, Good Tests
33rd Degree 2013, Bad Tests, Good Tests
Tomek Kaczanowski
The secret unit testing tools no one ever told you about
The secret unit testing tools no one ever told you about
Dror Helper
Unit testing with mock libs
Unit testing with mock libs
Valentin Kolesnikov
Introduction to Software Testing
Introduction to Software Testing
Sergio Arroyo
Asp netmvc e03
Asp netmvc e03
Yu GUAN
Confitura 2012 Bad Tests, Good Tests
Confitura 2012 Bad Tests, Good Tests
Tomek Kaczanowski
HRServicesPOX.classpathHRServicesPOX.project HRSer.docx
HRServicesPOX.classpathHRServicesPOX.project HRSer.docx
adampcarr67227
3 j unit
3 j unit
kishoregali
Testing with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs Life
Peter Gfader
Solit 2013, Автоматизация тестирования сложных систем: mixed mode automated t...
Solit 2013, Автоматизация тестирования сложных систем: mixed mode automated t...
solit
1 aleksandr gritsevski - attd example using
1 aleksandr gritsevski - attd example using
Ievgenii Katsan
Ive already completed the Java assignment below, but it doesnt wor.pdf
Ive already completed the Java assignment below, but it doesnt wor.pdf
fantasiatheoutofthef
Define a class named Doctor whose objects are records for clinic’s d.pdf
Define a class named Doctor whose objects are records for clinic’s d.pdf
MALASADHNANI
GeeCON 2012 Bad Tests, Good Tests
GeeCON 2012 Bad Tests, Good Tests
Tomek Kaczanowski
Hello. Im creating a class called Bill. I need to design the class.pdf
Hello. Im creating a class called Bill. I need to design the class.pdf
barristeressaseren71
Succeeding with Specification by Example
Succeeding with Specification by Example
Alistair McKinnell
Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names (Or Poor Design)
Alistair McKinnell
Contenu connexe
Similaire à Struggling to Create Maintainable Unit Tests?
Junit4&testng presentation
Junit4&testng presentation
Sanjib Dhar
Security Testing
Security Testing
Kiran Kumar
Writing Test Cases with PHPUnit
Writing Test Cases with PHPUnit
Shouvik Chatterjee
Selenium Webdriver with data driven framework
Selenium Webdriver with data driven framework
David Rajah Selvaraj
Unit testing with JUnit
Unit testing with JUnit
Thomas Zimmermann
33rd Degree 2013, Bad Tests, Good Tests
33rd Degree 2013, Bad Tests, Good Tests
Tomek Kaczanowski
The secret unit testing tools no one ever told you about
The secret unit testing tools no one ever told you about
Dror Helper
Unit testing with mock libs
Unit testing with mock libs
Valentin Kolesnikov
Introduction to Software Testing
Introduction to Software Testing
Sergio Arroyo
Asp netmvc e03
Asp netmvc e03
Yu GUAN
Confitura 2012 Bad Tests, Good Tests
Confitura 2012 Bad Tests, Good Tests
Tomek Kaczanowski
HRServicesPOX.classpathHRServicesPOX.project HRSer.docx
HRServicesPOX.classpathHRServicesPOX.project HRSer.docx
adampcarr67227
3 j unit
3 j unit
kishoregali
Testing with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs Life
Peter Gfader
Solit 2013, Автоматизация тестирования сложных систем: mixed mode automated t...
Solit 2013, Автоматизация тестирования сложных систем: mixed mode automated t...
solit
1 aleksandr gritsevski - attd example using
1 aleksandr gritsevski - attd example using
Ievgenii Katsan
Ive already completed the Java assignment below, but it doesnt wor.pdf
Ive already completed the Java assignment below, but it doesnt wor.pdf
fantasiatheoutofthef
Define a class named Doctor whose objects are records for clinic’s d.pdf
Define a class named Doctor whose objects are records for clinic’s d.pdf
MALASADHNANI
GeeCON 2012 Bad Tests, Good Tests
GeeCON 2012 Bad Tests, Good Tests
Tomek Kaczanowski
Hello. Im creating a class called Bill. I need to design the class.pdf
Hello. Im creating a class called Bill. I need to design the class.pdf
barristeressaseren71
Similaire à Struggling to Create Maintainable Unit Tests?
(20)
Junit4&testng presentation
Junit4&testng presentation
Security Testing
Security Testing
Writing Test Cases with PHPUnit
Writing Test Cases with PHPUnit
Selenium Webdriver with data driven framework
Selenium Webdriver with data driven framework
Unit testing with JUnit
Unit testing with JUnit
33rd Degree 2013, Bad Tests, Good Tests
33rd Degree 2013, Bad Tests, Good Tests
The secret unit testing tools no one ever told you about
The secret unit testing tools no one ever told you about
Unit testing with mock libs
Unit testing with mock libs
Introduction to Software Testing
Introduction to Software Testing
Asp netmvc e03
Asp netmvc e03
Confitura 2012 Bad Tests, Good Tests
Confitura 2012 Bad Tests, Good Tests
HRServicesPOX.classpathHRServicesPOX.project HRSer.docx
HRServicesPOX.classpathHRServicesPOX.project HRSer.docx
3 j unit
3 j unit
Testing with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs Life
Solit 2013, Автоматизация тестирования сложных систем: mixed mode automated t...
Solit 2013, Автоматизация тестирования сложных систем: mixed mode automated t...
1 aleksandr gritsevski - attd example using
1 aleksandr gritsevski - attd example using
Ive already completed the Java assignment below, but it doesnt wor.pdf
Ive already completed the Java assignment below, but it doesnt wor.pdf
Define a class named Doctor whose objects are records for clinic’s d.pdf
Define a class named Doctor whose objects are records for clinic’s d.pdf
GeeCON 2012 Bad Tests, Good Tests
GeeCON 2012 Bad Tests, Good Tests
Hello. Im creating a class called Bill. I need to design the class.pdf
Hello. Im creating a class called Bill. I need to design the class.pdf
Plus de Alistair McKinnell
Succeeding with Specification by Example
Succeeding with Specification by Example
Alistair McKinnell
Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names (Or Poor Design)
Alistair McKinnell
Don't Settle for Poor Names
Don't Settle for Poor Names
Alistair McKinnell
The Boy Scout Rule
The Boy Scout Rule
Alistair McKinnell
Advanced Developer Testing
Advanced Developer Testing
Alistair McKinnell
What Can Journalists Teach Developers About Writing Source Code?
What Can Journalists Teach Developers About Writing Source Code?
Alistair McKinnell
Ubiquitous Testing
Ubiquitous Testing
Alistair McKinnell
Commonality and Variability Analysis: Avoiding Duplicate Code
Commonality and Variability Analysis: Avoiding Duplicate Code
Alistair McKinnell
Simple Design
Simple Design
Alistair McKinnell
Agile Tour Shanghai December 2011
Agile Tour Shanghai December 2011
Alistair McKinnell
Pair Programming
Pair Programming
Alistair McKinnell
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
Alistair McKinnell
The Story of a Story
The Story of a Story
Alistair McKinnell
The Testing Landscape
The Testing Landscape
Alistair McKinnell
Plus de Alistair McKinnell
(14)
Succeeding with Specification by Example
Succeeding with Specification by Example
Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names (Or Poor Design)
Don't Settle for Poor Names
Don't Settle for Poor Names
The Boy Scout Rule
The Boy Scout Rule
Advanced Developer Testing
Advanced Developer Testing
What Can Journalists Teach Developers About Writing Source Code?
What Can Journalists Teach Developers About Writing Source Code?
Ubiquitous Testing
Ubiquitous Testing
Commonality and Variability Analysis: Avoiding Duplicate Code
Commonality and Variability Analysis: Avoiding Duplicate Code
Simple Design
Simple Design
Agile Tour Shanghai December 2011
Agile Tour Shanghai December 2011
Pair Programming
Pair Programming
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
Agile Transition in Trouble? Using the Kotter Change Model as a Diagnostic Tool
The Story of a Story
The Story of a Story
The Testing Landscape
The Testing Landscape
Dernier
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
2toLead Limited
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Pooja Nehwal
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Sinan KOZAK
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Katpro Technologies
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
OnBoard
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Memoori
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Padma Pradeep
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Pixlogix Infotech
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
Key Features Of Token Development (1).pptx
Key Features Of Token Development (1).pptx
LBM Solutions
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
shyamraj55
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
HostedbyConfluent
Dernier
(20)
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Slack Application Development 101 Slides
Slack Application Development 101 Slides
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Key Features Of Token Development (1).pptx
Key Features Of Token Development (1).pptx
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Struggling to Create Maintainable Unit Tests?
1.
2.
3.
Protocol => Mocks
Data => Builders
4.
5.
Define Maintainable Unit
Test
6.
7.
8.
Shared Vocabulary
9.
Mocks Builders
10.
11.
xUnit Test Patterns
12.
Mocks Builders
13.
14.
15.
16.
Examples
17.
18.
Domain Model
19.
public
void should_recognize_pediatric_patient() { // setup Patient sut = aPatient ().age(17).build(); // exercise and verify assertTrue (sut.isPediatric()); assertTrue (!sut.isAdult()); }
20.
public
void should_recognize_pediatric_patient() { // setup Patient sut = aPatient ().age(17).build(); // exercise and verify assertTrue (sut.isPediatric()); assertTrue (!sut.isAdult()); }
21.
public
void should_recognize_pediatric_patient() { // setup Patient sut = aPatient ().age(17).build(); // exercise and verify assertTrue (sut.isPediatric()); assertTrue (!sut.isAdult()); } aPatient ().dob(april(1, 1992)).build();
22.
23.
public
class CareTeamMembershipService implements ICareTeamMembershipService { private CareTeamMembershipDao careTeamMembershipDao ; public void addMember(Patient patient, CareTeam careTeam) { if (!patient.isRegisteredAt(careTeam.getFacility())) { throw new CareTeamAdminException(); } if (!patient.meets(careTeam.getMembershipCriteria())) { throw new CareTeamAdminException(); } careTeamMembershipDao .create( patient.getId(), careTeam.getId()); } }
24.
private
final CareTeamMembershipDao careTeamMembershipDao = context .mock(CareTeamMembershipDao. class ); private final ICareTeamMembershipService sut = createCareTeamMembershipService(); public void should_permit_add_for_appropriate_care_team() { // setup final Facility jacobi = aFacility ().build(); final Patient patient = aPatient ().at(jacobi).age(18) .with(Diagnosis. DIABETES ).build(); final CareTeam careTeam = anAdultCareTeam ().at(jacobi) .with(Diagnosis. DIABETES ).build(); // verify context .checking( new Expectations() {{ one( careTeamMembershipDao ).create( patient.getId(), careTeam.getId()); }}); // exercise sut .addMember(patient, careTeam); }
25.
private
final CareTeamMembershipDao careTeamMembershipDao = context .mock(CareTeamMembershipDao. class ); private final ICareTeamMembershipService sut = createCareTeamMembershipService(); // verify @Test (expected=CareTeamAdminException. class ) public void should_disallow_add_adult_to_pediatric_care_team() { // setup final Facility jacobi = aFacility ().build(); final Patient patient = aPatient ().at(jacobi).age(18) . with (Diagnosis. DIABETES ).build(); final CareTeam careTeam = aPediatricCareTeam ().at(jacobi) .with(Diagnosis. DIABETES ).build(); // exercise sut .addMember(patient, careTeam); }
26.
27.
When to Use
Mocks
28.
Mocks Builders
29.
Protocol Data
30.
Protocol => Mocks
Data => Builders
31.
32.
33.
34.
35.
36.
Credits Obstacle Race
http://www.flickr.com/photos/foxypar4/1004464889/ Einstein Blackboard Writing Generator http://generator.kitt.net/2006/12/ einstein-blackboard-writing-generator.html Holy Grail http://www.flickr.com/photos/ spiritual_marketplace/2207966935/
37.
Télécharger maintenant