2010-03-11 5 views
9

Ich bin vor kurzem zu C/C++ nach Jahren von C# zurückgekehrt. In diesen Jahren habe ich den Wert von Mocking und Unit Testing gefunden.C++ Mock/Test boost :: asio :: io_stream - basierte Asynch Handler

Die Suche nach Ressourcen für Mocks and Units Tests in C# ist trivial. WRT Mocking, nicht so sehr mit C++.

Ich hätte gerne eine Anleitung, was andere tun, um Asynch io_service Handler mit Boost zu verspotten und zu testen.

Zum Beispiel würde ich in C# mit einem MemoryStream einen IO.Stream vortäuschen, und ich nehme an, dies ist der Weg, den ich hier nehmen sollte.

  • C++ Mock/Test Best Practices
  • boost :: asio :: io_service Mock/Test Best Practices
  • C++ Async Handler Mock/Test Best Practices

ich den Prozess begonnen haben mit googlemock und googeltest.

Antwort

6

Wie Sie wahrscheinlich schon festgestellt haben, gibt es in C++ weitaus weniger Hilfe als in C# oder Java. Persönlich tendiere ich dazu, meine eigenen Mocks zu schreiben, wenn ich sie brauche, anstatt ein Framework zu verwenden. Da die meisten meiner Designs dazu neigen, auf den Schnittstellen schwer zu sein, ist dies für mich nicht besonders schwierig, und ich neige dazu, eine "Scheinbibliothek" aufzubauen, die zu dem Code gehört, den ich entwickle. Ein Beispiel dafür, wie ich Dinge mache, findet sich in meinen "Praxistests" -Artikeln here. Am Ende ist es nicht so anders, als in C# zu spotten und zu testen, es gelten alle die gleichen Prinzipien, nur am Ende macht man mehr von dem schweren Heben.

+0

Dies ist in der Tat hilfreich. Es dauert einen langen Weg, um die erste meiner Kugeln zu beantworten. Ich hoffte auf eine direkte Anleitung, wie asynchroner I/O mit boost :: asio :: io_service am besten simuliert/getestet werden kann. – rbellamy

+0

Tut mir leid, ich benutze kein ASIO, ich habe mein eigenes async I/O-Framework. –

+2

auch, schauen Sie sich effektiv mit Legacy Code von Michael Feathers arbeiten. Ich fand das eine gute Ressource und sehr hilfreich, um Nähte zu identifizieren und eigene Mocks zu erstellen. – Tim