In der Software-Entwicklung werden bei Modultests häufig sogenannte Mock-Objekte zur Isolation einer Komponente im Testlauf verwendet. Damit neben der echten Implementierung nicht zusätzlich noch eine Dummy-Implementierung geschrieben werden muss, kann ein Mocking-Framework eingesetzt werden. Dieses vereinfacht die Aufgabe, bestimmte zum Test benötigten Elemente, die aber selbst nicht getestet werden sollen, vorzutäuschen (zu „mocken“).
Funktionsweise
- Record: Das Mocking-Framework nimmt das zu liefernde Verhalten auf.
- Replay: Im Testlauf spielt das Mocking-Framework das Verhalten ab.
- Verify: Nach dem Test überprüft das Mocking-Framework, ob das aufgenommene Verhalten dem Verhalten im Test entsprochen hat.
Über das Testen hinaus
Ein Mocking-Framework kann sehr detailliert beschreiben, wie ein Software-Modul von innen funktionieren soll. Damit lassen sich Tests hervorragend dafür nutzen, Spezifikationen zu definieren. Der Vorteil dabei ist, dass Code nicht (falsch) interpretiert werden kann, wohingegen eine in Worte gefasste Spezifikation durchaus Interpretations-Spielraum lässt.
Mocking-Frameworks (Auswahl)
JavaScript
- Sinon.JS
- jQuery Mockjax
.Net-Framework
- Rhino Mocks
- moq
- NSubstitute
- FakeItEasy
- Simple Mocking
- Microsoft Fakes
C
- cmocka
- cmockery
- hammocking
C++
- Google Test (vormals Google C++ Mocking Framework)
- Hippomocks
Java
Ruby
- rr
- RSpec-Spies
Python
- Mock
- pymox
- dingus
ABAP
- mockA
Delphi
- Delphi-Mocks
Weblinks
Einzelnachweise
- ↑ Sinon.JS Homepage. In: sinonjs.org. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ jQuery Mockjax. In: github.com/jakerella/jquery-mockjax. Abgerufen am 8. Juli 2015 (englisch).
- ↑ Rhino Mocks Homepage. In: hibernatingrhinos.com. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ moq auf GitHub. In: github.com. Abgerufen am 25. September 2014 (englisch).
- ↑ NSubstitute auf Github. In: github.com. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ The easy mocking library for .NET. Contribute to FakeItEasy/FakeItEasy development by creating an account on GitHub. FakeItEasy, 13. Dezember 2019, abgerufen am 13. Dezember 2019.
- ↑ Simple Mocking auf Codeplex. In: codeplex.com. Abgerufen am 14. April 2014 (englisch).
- ↑ MSDN: Isolating Code Under Test with Microsoft Fakes. Microsoft, abgerufen am 16. November 2016 (englisch).
- ↑ unit testing framework for C with support for mock objects. Abgerufen am 1. Oktober 2014 (englisch).
- ↑ A lightweight library to simplify and generalize the process of writing unit tests for C applications. Abgerufen am 1. Oktober 2014 (englisch).
- ↑ Hammocking – Generates Google Mocks or code from your Jinja2-templates of your legacy code. Abgerufen am 11. Januar 2023.
- ↑ Google Test auf GitHub. In: github.com. Abgerufen am 15. Dezember 2018 (englisch).
- ↑ Google C++ Mocking Framework auf GitHub. In: github.com. Abgerufen am 8. Januar 2016 (englisch).
- ↑ Hippomocks, C++ Mocking Framework. Abgerufen am 11. November 2014 (englisch).
- ↑ mockito auf Github. In: github.com. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ jmockit auf github.io. In: github.io. Abgerufen am 18. Juli 2014 (englisch).
- ↑ Easymock Homepage. (Nicht mehr online verfügbar.) In: easymock.org. Archiviert vom am 7. August 2019; abgerufen am 20. Dezember 2012 (englisch). Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ PowerMock auf Google Code. In: code.google.com. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ rr auf Github. In: github.com. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ RSpec-Spies auf Github. In: github.com. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ Mock Homepage. In: voidspace.org.uk. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ pymox auf Google Code. In: code.google.com. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ dingus auf python.org. In: python.org. Abgerufen am 20. Dezember 2012 (englisch).
- ↑ mockA Homepage. In: github.com. Abgerufen am 12. Januar 2014 (englisch).
- ↑ Delphi-Mocks Homepage. In: github.com. Abgerufen am 26. Oktober 2019 (englisch).