Als «mocking» getaggte Fragen

Durch Verspotten und Fälschen können Code oder Komponenten isoliert werden, um sicherzustellen, dass Komponententests nur für die testbare Codeeinheit ausgeführt werden, ohne dass andere Komponenten oder Abhängigkeiten einer Anwendung tatsächlich verwendet werden. Das Verspotten unterscheidet sich vom Fälschen darin, dass ein Schein überprüft werden kann, um die Ergebnisse eines Tests zu bestätigen.

4
Wann sollte ich Scheinobjekte verwenden?
Ich habe viel über TDD gelesen, aber ich habe immer noch Zweifel. Zum Beispiel habe ich diese Klassendiagramme: Es ist ein einfaches Beispiel, um TDD und Scheinobjekte kennenzulernen. Welchen Test soll ich zuerst schreiben? Produkt , dann Linie und zuletzt Bestellung ? Wenn ich das tue, sollte ich Line and …

1
Wie teste ich einen Bildverarbeitungscode?
Ich arbeite in der Bildverarbeitung (hauptsächlich OCR) und frage mich, wie ich Unit-Tests in meine Entwicklung integrieren soll. Ich benutze bereits Komponententests für "häufigere" Codearten, aber wenn ich mit Bildverarbeitungscode arbeite, bin ich mir nicht sicher, wie ich damit umgehen soll. Diese Art von Code benötigt immer eine Eingabe / …

4
Wie teste ich Code, der von komplexen APIs abhängt (z. B. Amazon S3)?
Ich habe Probleme beim Testen einer Methode, mit der Dokumente auf Amazon S3 hochgeladen werden, aber ich denke, diese Frage gilt für alle nicht trivialen APIs / externen Abhängigkeiten. Ich habe nur drei mögliche Lösungen gefunden, aber keine scheint zufriedenstellend zu sein: Führen Sie den Code aus, laden Sie das …
13 testing  mocking 

4
Verstoßen Mocks gegen das Open / Closed-Prinzip?
Vor einiger Zeit las ich auf einer Stapelüberlauf-Antwort, die ich nicht finden kann, einen Satz, der erklärte, dass Sie öffentliche APIs testen sollten, und der Autor sagte, dass Sie Schnittstellen testen sollten. Der Autor erklärte auch, dass bei einer Änderung der Methodenimplementierung der Testfall nicht geändert werden muss, da dies …

3
Wie verspottet man eine Methode mit einem hartcodierten Objekt?
Ich arbeite an einer Anwendung, die mehrere Ebenen hat. Datenzugriffsschicht zum Abrufen und Speichern von Daten aus der Datenquelle, Geschäftslogik zum Bearbeiten von Daten, Benutzeroberfläche zum Anzeigen der Daten auf dem Bildschirm. Ich mache auch Unit-Tests der Geschäftslogikschicht. Die einzige Anforderung besteht darin, den Ablauf der Business-Layer-Logik zu testen. Daher …

3
Verspottende Betonklasse - Nicht empfohlen
Ich habe gerade einen Auszug aus dem Buch "Growing Object-Oriented Software" gelesen, in dem einige Gründe erläutert werden, warum das Verspotten einer konkreten Klasse nicht empfohlen wird. Hier ein Beispielcode eines Unit-Tests für die MusicCentre-Klasse: public class MusicCentreTest { @Test public void startsCdPlayerAtTimeRequested() { final MutableTime scheduledTime = new MutableTime(); …

2
Testen - In-Memory-DB vs Mocking
Warum sollte jemand beim Schreiben von Tests eine In-Memory-Datenbank verwenden, um nur die Daten zu verspotten? Ich konnte sehen, dass In-Memory-Datenbanken zum Testen der eigenen Repositorys von Vorteil sein können. Wenn Sie jedoch ein Framework (z. B. Spring Data) verwenden, wird beim Testen der Repositorys das Framework und nicht wirklich …

1
Wie viel Spott ist "genau richtig"?
Ich habe die Frage scherzhaft betitelt, weil ich sicher bin, dass "es darauf ankommt", aber ich habe einige spezifische Fragen. Mein Team arbeitet mit Software, die viele tiefe Abhängigkeitsebenen aufweist, und hat sich daran gewöhnt, das Verspotten ziemlich ausführlich zu verwenden, um jedes Codemodul von den darunter liegenden Abhängigkeiten zu …

2
Wie würden Tippfehler beim Erstellen von Mocks in einer dynamischen Sprache erkannt?
Das Problem tritt beim TDD auf. Nach einigen Testdurchläufen ändern sich die Rückgabetypen einiger Klassen / Module. Wenn in einer statisch typisierten Programmiersprache ein zuvor verspottetes Objekt in den Tests einer anderen Klasse verwendet wurde und nicht geändert wurde, um die Typänderung widerzuspiegeln, treten Kompilierungsfehler auf. Bei dynamischen Sprachen wird …

5
TDD: Verspottete Objekte verspotten
Manchmal müssen Objekte nur eng miteinander verbunden werden. Beispielsweise muss eine CsvFileKlasse wahrscheinlich eng mit der CsvRecordKlasse (oder ICsvRecordSchnittstelle) zusammenarbeiten. Nach dem, was ich in der Vergangenheit gelernt habe, lautet einer der wichtigsten Grundsätze der testgetriebenen Entwicklung: "Testen Sie niemals mehr als eine Klasse gleichzeitig." Das heißt, Sie sollten ICsvRecordMocks …
10 tdd  coupling  mocking 


4
Wie würde eine neue Sprache aussehen, wenn sie von Grund auf so gestaltet wäre, dass sie für TDD einfach ist?
Bei den gängigsten Sprachen (Java, C #, Java usw.) scheint es manchmal so, als würden Sie im Widerspruch zur Sprache arbeiten, wenn Sie Ihren Code vollständig TDD-fähig machen möchten. In Java und C # möchten Sie beispielsweise alle Abhängigkeiten Ihrer Klassen verspotten, und die meisten Verspottungs-Frameworks empfehlen, dass Sie Schnittstellen …

6
Sind HSQLDB-Unit-Tests ein Anti-Pattern?
HSQLDB ist großartig. Es verfügt (auch) über einen eingebetteten Modus (kein dedizierter Server erforderlich), der ein schnelles Prototyping von Dingen wie Proof of Concepts ermöglicht, und eignet sich auch hervorragend für produktionsbereite Anwendungen als schnelle und einfache Speicherung verschiedener Daten. Mindestens 90% der Projekte, an denen ich in den letzten …

3
Wie schreibe ich Unit-Tests für Legacy-Code (den ich nicht verstehe)?
Nach vorne Ich habe viele Dinge gelesen, bevor ich diese Frage gestellt habe, einschließlich vieler relevanter Fragen hier auf SE: (Software Engineering SE) Schreiben von Tests für Code, dessen Zweck ich nicht verstehe (Software Engineering SE) Unit-Test-Neuling-Team muss Unit-Test durchführen (Software Engineering SE) Best Practices für die Nachrüstung von Legacy-Code …

6
Ich bin verwirrt darüber, wie man mit TDD richtig arbeitet
Ich versuche zu verstehen, was die Idee hinter TDD ist und wie ein Team damit arbeiten soll. Ich habe den folgenden Testfall mit NUnit + Moq (nur durch Speicher schreiben, es ist nicht sicher, dass das Beispiel kompiliert wird, aber es sollte erklärend sein): [Test] public void WhenUserLogsCorrectlyIsRedirectedToLoginCorrectView() { Mock<IUserDatabaseRepository> …
8 tdd  mocking 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.