Difference between revisions of "Mocking Frameworks"

From Embedded Lab Vienna for IoT & Security
Jump to navigation Jump to search
Line 18: Line 18:
=== Mocking Frameworks ===
=== Mocking Frameworks ===


Mocking Frameworks are used to generate replacement objects like Stubs and Mocks,thereby complimenting Unit Testing Frameworks by isolating dependencies. But remember they are not replacement for unit testing frameworks and they should not be used to test the actual behavior of the software. Rather they are used to simulate or mock dependencies  especially external APIs and Databases in tests.
Mocking Frameworks are used to generate replacement objects like Stubs and Mocks,thereby complimenting Unit Testing Frameworks by isolating dependencies. But remember they are not replacement for unit testing frameworks and they should not be used to test the actual behavior of the software. Rather they are used to simulate or mock dependencies  especially to simulate external APIs and Databases in tests.
 




Line 31: Line 30:


* Can also lead to writing tests that do not adequately reflect the actual behavior of the software.
* Can also lead to writing tests that do not adequately reflect the actual behavior of the software.
==== Frameworks in different programming languages
• Mockito (Java)
• Moq (.NET)
• Mock (Python)
• EasyMock (Java)
• jMock (Java)


== References ==
== References ==

Revision as of 00:07, 24 January 2023

Summary

This document gives basic insights about Mocking and Mocking Frameworks with their usages, advantages and disadvantages. Also, some code examples showing mock testing demo using Frameworks like Mock(Python), Mockito(Java) and Moq(.NET) are also given.

Requirements

  • Operating system:
  • Packages: unittest.mock (Python), org.mockito.Mockito(Java) and Moq(.NET)

Description

Mocking

Mocking is a process used in unit testing when unit being tested has external dependencies.It creates mock objects (also known as replacement or dummy objects) that can be used in the simulation of real objects.The main purpose of this process is isolation of code being tested rather than concentrating on the behaviour or state of external dependencies.Mocking is normally required when components under test has dependencies which has no been implemented yet or if implementation is in progress (eg:REST APIs) or when components update system state(DB calls).

Mocking makes use of three types of replacement objects: fakes, stubs and mocks. The fakes are used when you want to test the behavior of a class that has no dependencies. The stubs are used to test the behavior of a class that has dependencies.They will return results based on specific set of inputs and won't respond to something outside of what is programmed for the test. The mocks are advanced version of stubs which can also additionally modify behaviors like how many times method should be called, with what data and in which order.

Mocking Frameworks

Mocking Frameworks are used to generate replacement objects like Stubs and Mocks,thereby complimenting Unit Testing Frameworks by isolating dependencies. But remember they are not replacement for unit testing frameworks and they should not be used to test the actual behavior of the software. Rather they are used to simulate or mock dependencies especially to simulate external APIs and Databases in tests.


Advantages

  • Tests can be isolated and thereby improving the test quality. It helps developers to write focused and concise unit tests.
  • It can also help to run tests faster and generate test data.

Disadvantages

  • Can lead to complex and difficult-to-understand tests if not used carefully.
  • Can also lead to writing tests that do not adequately reflect the actual behavior of the software.

==== Frameworks in different programming languages


• Mockito (Java)

• Moq (.NET)

• Mock (Python)

• EasyMock (Java)

• jMock (Java)

References