Using Rhino Mocks for Effective Unit Testing

Mike Clement
Mike ClementHusband, Father and VP of Engineering at Emmersion, Founder Software Craftsmanship Atlanta
Using Rhino Mocks for Effective Unit Testing,[object Object],Mike Clement,[object Object],Utah Code Camp,[object Object],Spring 2011,[object Object],mike@softwareontheside.com,[object Object],@mdclement,[object Object]
Unit Testing Defined,[object Object],“A piece of code that invokes another piece of code and checks the correctness of some assumptions afterward.”,[object Object]
Good Unit Tests,[object Object],Automated and repeatable,[object Object],Easy to implement,[object Object],Remain for future use,[object Object],Anyone should be able to run it,[object Object],Run easily (push of a button),[object Object],Run quickly,[object Object]
Simple Unit Tests,[object Object],No dependencies,[object Object]
Simple Unit Test Demo,[object Object],Prime Factors,[object Object]
More Complex Unit Tests,[object Object],Simple only gets you so far,[object Object],Need more sophisticated mechanisms,[object Object],Isolation or Mocking Frameworks to the rescue!,[object Object],Does necessitate classes/methods designed for testing,[object Object]
Test Doubles,[object Object],Dummy objects are passed around but never actually used. Usually they are just used to fill parameter lists.,[object Object],Fake objects actually have working implementations, but usually take some shortcut which makes them not suitable for production (an in memory database is a good example).,[object Object]
More Test Doubles (Stubs),[object Object],Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what's programmed in for the test. Stubs may also record information about calls, such as an email gateway stub that remembers the messages it 'sent', or maybe only how many messages it 'sent'.,[object Object],In Rhino Mocks:,[object Object],an object that you use in order to pass to the code under test. ,[object Object],expectations will never be verified. ,[object Object],properties will automatically behave like normal properties, and you can't set expectations on them.,[object Object],IMPORTANT: A stub will never cause a test to fail.,[object Object],MockRepository.GenerateStub<T>(),[object Object]
Rhino Mocks Features,[object Object],Choice of "Arrange, Act, and Assert" or "Explicit record, replay, and verify" models for expectations.,[object Object],Support for Generics, C# Lambda expressions, and other C# 3.0 and .NET 3.5 features,[object Object],Working with strongly typed mocks.,[object Object],Expectations based on:,[object Object],Arguments matching,[object Object],Constraints matching,[object Object],Custom callback to verify the expected arguments using your own code,[object Object],Calling your delegates to decide what to do,[object Object],Setting actions on methods, return specific value, or throw an exception.,[object Object],Much more.,[object Object]
Stubs Demo,[object Object]
Simple and Inline Constraints,[object Object],Specify,[object Object],repository.Stub(x => x.UpdateSession(session)),[object Object],Ignore All,[object Object],IgnoreArguments(),[object Object],Arg<T>.Is.Anything,[object Object],Arg<T>.Is.Null,[object Object]
Arg Constraints,[object Object],Arg<T>.Is,[object Object],Equal(object), NotEqual(object)	Comparison using Equals,[object Object],GreaterThan(object), LessThan(object), LessThanOrEqual(object), GreaterThanOrEqual(object)	Comparison using >, <, >= and <= operators,[object Object],Same(object), NotSame(object)	Reference equality,[object Object],Anything()	No constraints,[object Object],Null(), NotNull()	Reference is null or not null,[object Object],TypeOf(Type), TypeOf<T>()	Argument is of a certain type,[object Object],Matching<T>(Predicate<T>)	Argument matches a predicate (.NET 3.5: see Arg<T>.Matches). Example: Arg<string>.Is.Matching(delegate(string s) { return s.Length == 2; },[object Object],IsIn(object)	Enumerable argument includes the specified object,[object Object],Arg<T>.List,[object Object],OneOf(IEnumerable)	Argument is in the specified list,[object Object],Equal(IEnumerable)	All items in the enumerable argument are compared to the items in the specified list.,[object Object],Count(AbstractConstraint)	Constraints to the Count property of the argument.,[object Object],Element(int, AbstractConstraint)	Element at the specified index meets the constraint.,[object Object],ContainsAll(IEnumerable)	The enumerable argument contains at least the specified items.,[object Object],Arg<T>.Property,[object Object],AllPropertiesMatch(object)	All the public properties and public fields are compared to the properties in the specified object. The comparesion is recusive if public properties or fields are complex types.,[object Object],IsNotNull(string propertyName), IsNull(string propertyName)	Property of the given name is or is not null,[object Object],Value(string propertyName, object expectedValue)	The property of the given name is equal to the expected value.,[object Object],Value(string propertyName, AbstractConstraint constraint)	Property of the given Name meets the constraint.,[object Object],Arg.Text,[object Object],StartsWith(string), EndsWith(string), Contains(string)	String starts with, ends with or contains the specified text,[object Object],Like(string regex)	Property matches to the regular expression,[object Object],Arg<T>.Matches,[object Object],Arg<T>.Matches(Expression)	Only in .NET 3.5 you can specify the constraint as a lambda expression, e.g. Arg<int>.Matches(x => x > 3),[object Object],Arg<T>.Matches(AbstractConstraint)	Specify Rhino Mocks Constraints, e.g. Arg<int>.Matches(Is.GreaterThan(0) && Is.LessThan(10)),[object Object],http://www.ayende.com/wiki/Rhino+Mocks+3.5.ashx#ConstraintsReference,[object Object]
More Test Doubles (Mocks),[object Object],Mocks are objects pre-programmed with expectations which form a specification of the calls they are expected to receive.,[object Object],An object that we can set expectations on, and which will verify that the expected actions have indeed occurred. ,[object Object],http://martinfowler.com/articles/mocksArentStubs.html,[object Object]
Mocks,[object Object],Strict vs. Dynamic,[object Object],Use Dynamic Mocks… Strict not recommended,[object Object],MockRepository.GenerateMock<T>(),[object Object]
Mocks Demo,[object Object]
Events!,[object Object],[Test] ,[object Object],public void RaisingEvent () ,[object Object],{ ,[object Object],varmocks = new MockRepository();,[object Object],IView view = mocks.DynamicMock<IView>();,[object Object],Presenter p = new Presenter(view);view.Raise(x => x.Load += null, this, EventArgs.Empty);Assert.IsTrue(p.OnLoadCalled); ,[object Object],},[object Object]
Good Unit Testing Resources!,[object Object],The Art of Unit Testing: With Examples in .Net,[object Object],Pragmatic Unit Testing in C# with NUnit, 2nd Edition,[object Object],http://www.ayende.com/wiki/Rhino+Mocks.ashx,[object Object]
Thank you to our sponsors!,[object Object],Platinum Sponsors,[object Object],Gold Sponsors,[object Object],Silver Sponsors,[object Object],Bronze Sponsors,[object Object]
1 of 18

Recommended

JAVA Tutorial- Do's and Don'ts of Java programming by
JAVA Tutorial- Do's and Don'ts of Java programmingJAVA Tutorial- Do's and Don'ts of Java programming
JAVA Tutorial- Do's and Don'ts of Java programmingKeshav Kumar
4.3K views54 slides
Java best practices by
Java best practicesJava best practices
Java best practicesRay Toal
3.7K views47 slides
Easymock Tutorial by
Easymock TutorialEasymock Tutorial
Easymock TutorialSbin m
20.9K views25 slides
Implementing a decorator for thread synchronisation. by
Implementing a decorator for thread synchronisation.Implementing a decorator for thread synchronisation.
Implementing a decorator for thread synchronisation.Graham Dumpleton
2.1K views41 slides
Coding Best Practices by
Coding Best PracticesCoding Best Practices
Coding Best Practicesmh_azad
6.6K views24 slides
Mockito by
MockitoMockito
Mockitosudha rajamanickam
7.1K views35 slides

More Related Content

What's hot

Learning php 7 by
Learning php 7Learning php 7
Learning php 7Ed Lomonaco
2.8K views27 slides
Mocking with Mockito by
Mocking with MockitoMocking with Mockito
Mocking with MockitoPaul Churchward
388 views13 slides
The Little Wonders of C# 6 by
The Little Wonders of C# 6The Little Wonders of C# 6
The Little Wonders of C# 6BlackRabbitCoder
6.2K views44 slides
Test doubles and EasyMock by
Test doubles and EasyMockTest doubles and EasyMock
Test doubles and EasyMockRafael Antonio Gutiérrez Turullols
321 views36 slides
Best practices unit testing by
Best practices unit testing Best practices unit testing
Best practices unit testing Tricode (part of Dept)
1.2K views20 slides
Write codeforhumans by
Write codeforhumansWrite codeforhumans
Write codeforhumansNarendran R
270 views30 slides

What's hot(19)

Learning php 7 by Ed Lomonaco
Learning php 7Learning php 7
Learning php 7
Ed Lomonaco2.8K views
Write codeforhumans by Narendran R
Write codeforhumansWrite codeforhumans
Write codeforhumans
Narendran R270 views
Unit Testing Standards - Recommended Best Practices by Vitaliy Kulikov
Unit Testing Standards - Recommended Best PracticesUnit Testing Standards - Recommended Best Practices
Unit Testing Standards - Recommended Best Practices
Vitaliy Kulikov614 views
OCA Java SE 8 Exam Chapter 3 Core Java APIs by İbrahim Kürce
OCA Java SE 8 Exam Chapter 3 Core Java APIsOCA Java SE 8 Exam Chapter 3 Core Java APIs
OCA Java SE 8 Exam Chapter 3 Core Java APIs
İbrahim Kürce2.6K views
C++ Unit Test with Google Testing Framework by Humberto Marchezi
C++ Unit Test with Google Testing FrameworkC++ Unit Test with Google Testing Framework
C++ Unit Test with Google Testing Framework
Humberto Marchezi7.4K views
Effective Java - Chapter 3: Methods Common to All Objects by İbrahim Kürce
Effective Java - Chapter 3: Methods Common to All ObjectsEffective Java - Chapter 3: Methods Common to All Objects
Effective Java - Chapter 3: Methods Common to All Objects
İbrahim Kürce2.3K views
OCA Java SE 8 Exam Chapter 4 Methods Encapsulation by İbrahim Kürce
OCA Java SE 8 Exam Chapter 4 Methods EncapsulationOCA Java SE 8 Exam Chapter 4 Methods Encapsulation
OCA Java SE 8 Exam Chapter 4 Methods Encapsulation
İbrahim Kürce3.3K views
More Little Wonders of C#/.NET by BlackRabbitCoder
More Little Wonders of C#/.NETMore Little Wonders of C#/.NET
More Little Wonders of C#/.NET
BlackRabbitCoder65.8K views
Test-Driven Development of Xtext DSLs by meysholdt
Test-Driven Development  of Xtext DSLsTest-Driven Development  of Xtext DSLs
Test-Driven Development of Xtext DSLs
meysholdt5.1K views
Unit testing.pptx [repaired] by Mohammad Asmar
Unit testing.pptx [repaired]Unit testing.pptx [repaired]
Unit testing.pptx [repaired]
Mohammad Asmar230 views
A04 by lksoo
A04A04
A04
lksoo145 views
C# coding standards, good programming principles & refactoring by Eyob Lube
C# coding standards, good programming principles & refactoringC# coding standards, good programming principles & refactoring
C# coding standards, good programming principles & refactoring
Eyob Lube11.2K views
Writing and using Hamcrest Matchers by Shai Yallin
Writing and using Hamcrest MatchersWriting and using Hamcrest Matchers
Writing and using Hamcrest Matchers
Shai Yallin47.9K views

Viewers also liked

Put the Tests Before the Code by
Put the Tests Before the CodePut the Tests Before the Code
Put the Tests Before the CodeMike Clement
960 views39 slides
Software Craftsmanship and Agile Code Games by
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesMike Clement
6.3K views62 slides
Play to Learn: Agile Games with Cards and Dice by
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DiceMike Clement
1.8K views33 slides
Thinking in F# by
Thinking in F#Thinking in F#
Thinking in F#Mike Clement
1.7K views12 slides
Transformation Priority Premise: TDD Test Order Matters by
Transformation Priority Premise: TDD Test Order MattersTransformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order MattersMike Clement
3.3K views26 slides
Power of Patterns: Refactoring to (or away from) Patterns by
Power of Patterns: Refactoring to (or away from) PatternsPower of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) PatternsMike Clement
2.6K views68 slides

Viewers also liked(9)

Put the Tests Before the Code by Mike Clement
Put the Tests Before the CodePut the Tests Before the Code
Put the Tests Before the Code
Mike Clement960 views
Software Craftsmanship and Agile Code Games by Mike Clement
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
Mike Clement6.3K views
Play to Learn: Agile Games with Cards and Dice by Mike Clement
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and Dice
Mike Clement1.8K views
Transformation Priority Premise: TDD Test Order Matters by Mike Clement
Transformation Priority Premise: TDD Test Order MattersTransformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order Matters
Mike Clement3.3K views
Power of Patterns: Refactoring to (or away from) Patterns by Mike Clement
Power of Patterns: Refactoring to (or away from) PatternsPower of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) Patterns
Mike Clement2.6K views
The Quest for Continuous Delivery at Pluralsight by Mike Clement
The Quest for Continuous Delivery at PluralsightThe Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at Pluralsight
Mike Clement2.4K views
Mob Programming for Continuous Learning by Mike Clement
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
Mike Clement1.7K views

Similar to Using Rhino Mocks for Effective Unit Testing

Xp Day 080506 Unit Tests And Mocks by
Xp Day 080506 Unit Tests And MocksXp Day 080506 Unit Tests And Mocks
Xp Day 080506 Unit Tests And Mocksguillaumecarre
846 views20 slides
Introduction to Client-Side Javascript by
Introduction to Client-Side JavascriptIntroduction to Client-Side Javascript
Introduction to Client-Side JavascriptJulie Iskander
861 views53 slides
Mockito with a hint of PowerMock by
Mockito with a hint of PowerMockMockito with a hint of PowerMock
Mockito with a hint of PowerMockYing Zhang
6.9K views34 slides
JAVA Tutorial- Do's and Don'ts of Java programming by
JAVA Tutorial- Do's and Don'ts of Java programmingJAVA Tutorial- Do's and Don'ts of Java programming
JAVA Tutorial- Do's and Don'ts of Java programmingKeshav Kumar
646 views54 slides
Unit testing - A&BP CC by
Unit testing - A&BP CCUnit testing - A&BP CC
Unit testing - A&BP CCJWORKS powered by Ordina
722 views113 slides
First fare 2010 java-introduction by
First fare 2010 java-introductionFirst fare 2010 java-introduction
First fare 2010 java-introductionOregon FIRST Robotics
642 views20 slides

Similar to Using Rhino Mocks for Effective Unit Testing(20)

Xp Day 080506 Unit Tests And Mocks by guillaumecarre
Xp Day 080506 Unit Tests And MocksXp Day 080506 Unit Tests And Mocks
Xp Day 080506 Unit Tests And Mocks
guillaumecarre846 views
Introduction to Client-Side Javascript by Julie Iskander
Introduction to Client-Side JavascriptIntroduction to Client-Side Javascript
Introduction to Client-Side Javascript
Julie Iskander861 views
Mockito with a hint of PowerMock by Ying Zhang
Mockito with a hint of PowerMockMockito with a hint of PowerMock
Mockito with a hint of PowerMock
Ying Zhang6.9K views
JAVA Tutorial- Do's and Don'ts of Java programming by Keshav Kumar
JAVA Tutorial- Do's and Don'ts of Java programmingJAVA Tutorial- Do's and Don'ts of Java programming
JAVA Tutorial- Do's and Don'ts of Java programming
Keshav Kumar646 views
Java 7 new features by Shivam Goel
Java 7 new featuresJava 7 new features
Java 7 new features
Shivam Goel2.2K views
Introduction to Boost regex by Yongqiang Li
Introduction to Boost regexIntroduction to Boost regex
Introduction to Boost regex
Yongqiang Li1.4K views
Java Unit Test - JUnit by Aktuğ Urun
Java Unit Test - JUnitJava Unit Test - JUnit
Java Unit Test - JUnit
Aktuğ Urun96 views
Introduction to Intermediate Java by Philip Johnson
Introduction to Intermediate JavaIntroduction to Intermediate Java
Introduction to Intermediate Java
Philip Johnson570 views
Back-2-Basics: .NET Coding Standards For The Real World (2011) by David McCarter
Back-2-Basics: .NET Coding Standards For The Real World (2011)Back-2-Basics: .NET Coding Standards For The Real World (2011)
Back-2-Basics: .NET Coding Standards For The Real World (2011)
David McCarter681 views
Can't Dance The Lambda by Togakangaroo
Can't Dance The LambdaCan't Dance The Lambda
Can't Dance The Lambda
Togakangaroo1.2K views
Java fundamentals by HCMUTE
Java fundamentalsJava fundamentals
Java fundamentals
HCMUTE887 views
Grails unit testing by pleeps
Grails unit testingGrails unit testing
Grails unit testing
pleeps4.1K views

More from Mike Clement

Collaboration Principles from Mob Programming by
Collaboration Principles from Mob ProgrammingCollaboration Principles from Mob Programming
Collaboration Principles from Mob ProgrammingMike Clement
113 views116 slides
Focus on Flow: Lean Principles in Action by
Focus on Flow: Lean Principles in ActionFocus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in ActionMike Clement
130 views108 slides
Taming scary production code that nobody wants to touch by
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchMike Clement
912 views60 slides
Develop your sense of code smell by
Develop your sense of code smellDevelop your sense of code smell
Develop your sense of code smellMike Clement
1.2K views51 slides
Maps over Backlogs: User Story Mapping to Share the Big Picture by
Maps over Backlogs: User Story Mapping to Share the Big PictureMaps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big PictureMike Clement
989 views45 slides
Escaping the Pitfalls of Software Product Development by
Escaping the Pitfalls of Software Product DevelopmentEscaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product DevelopmentMike Clement
153 views44 slides

More from Mike Clement(11)

Collaboration Principles from Mob Programming by Mike Clement
Collaboration Principles from Mob ProgrammingCollaboration Principles from Mob Programming
Collaboration Principles from Mob Programming
Mike Clement113 views
Focus on Flow: Lean Principles in Action by Mike Clement
Focus on Flow: Lean Principles in ActionFocus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in Action
Mike Clement130 views
Taming scary production code that nobody wants to touch by Mike Clement
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touch
Mike Clement912 views
Develop your sense of code smell by Mike Clement
Develop your sense of code smellDevelop your sense of code smell
Develop your sense of code smell
Mike Clement1.2K views
Maps over Backlogs: User Story Mapping to Share the Big Picture by Mike Clement
Maps over Backlogs: User Story Mapping to Share the Big PictureMaps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big Picture
Mike Clement989 views
Escaping the Pitfalls of Software Product Development by Mike Clement
Escaping the Pitfalls of Software Product DevelopmentEscaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product Development
Mike Clement153 views
Code Katas Spring 2012 by Mike Clement
Code Katas Spring 2012Code Katas Spring 2012
Code Katas Spring 2012
Mike Clement2.8K views
Linq (from the inside) by Mike Clement
Linq (from the inside)Linq (from the inside)
Linq (from the inside)
Mike Clement1.3K views
Bowling Game Kata in C# Adapted by Mike Clement
Bowling Game Kata in C# AdaptedBowling Game Kata in C# Adapted
Bowling Game Kata in C# Adapted
Mike Clement4.8K views
Code Katas: Practicing Your Craft by Mike Clement
Code Katas: Practicing Your CraftCode Katas: Practicing Your Craft
Code Katas: Practicing Your Craft
Mike Clement4.4K views
Software Craftsmanship by Mike Clement
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
Mike Clement947 views

Recently uploaded

Network Source of Truth and Infrastructure as Code revisited by
Network Source of Truth and Infrastructure as Code revisitedNetwork Source of Truth and Infrastructure as Code revisited
Network Source of Truth and Infrastructure as Code revisitedNetwork Automation Forum
26 views45 slides
Melek BEN MAHMOUD.pdf by
Melek BEN MAHMOUD.pdfMelek BEN MAHMOUD.pdf
Melek BEN MAHMOUD.pdfMelekBenMahmoud
14 views1 slide
Serverless computing with Google Cloud (2023-24) by
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)wesley chun
11 views33 slides
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf by
STKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdfSTKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdf
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdfDr. Jimmy Schwarzkopf
19 views29 slides
Mini-Track: Challenges to Network Automation Adoption by
Mini-Track: Challenges to Network Automation AdoptionMini-Track: Challenges to Network Automation Adoption
Mini-Track: Challenges to Network Automation AdoptionNetwork Automation Forum
12 views27 slides
Transcript: The Details of Description Techniques tips and tangents on altern... by
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...BookNet Canada
136 views15 slides

Recently uploaded(20)

Serverless computing with Google Cloud (2023-24) by wesley chun
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)
wesley chun11 views
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf by Dr. Jimmy Schwarzkopf
STKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdfSTKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdf
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf
Transcript: The Details of Description Techniques tips and tangents on altern... by BookNet Canada
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...
BookNet Canada136 views
HTTP headers that make your website go faster - devs.gent November 2023 by Thijs Feryn
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
Thijs Feryn22 views
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson85 views
Special_edition_innovator_2023.pdf by WillDavies22
Special_edition_innovator_2023.pdfSpecial_edition_innovator_2023.pdf
Special_edition_innovator_2023.pdf
WillDavies2217 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman33 views
Case Study Copenhagen Energy and Business Central.pdf by Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana16 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely21 views
Empathic Computing: Delivering the Potential of the Metaverse by Mark Billinghurst
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the Metaverse
Mark Billinghurst478 views

Using Rhino Mocks for Effective Unit Testing

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.