Ich muss Teufel spielen, die sich ein bisschen für diese Frage einsetzen, weil ich sie wegen mangelnder Erfahrung nicht gut verteidigen kann. Hier ist der Deal, ich verstehe konzeptionell die Unterschiede zwischen Unit-Test und Integrationstest. Wenn sich ein Unit-Test speziell auf Persistenzmethoden und das Repository konzentriert, wird möglicherweise über ein Framework wie Moq ein Mock verwendet, um zu bestätigen, dass eine gesuchte Bestellung wie erwartet zurückgegeben wurde.
Angenommen, ich habe den folgenden Komponententest erstellt:
[TestMethod]
public void GetOrderByIDTest()
{
//Uses Moq for dependency for getting order to make sure
//ID I set up in 'Arrange' is same one returned to test in 'Assertion'
}
Wenn ich es also einrichte OrderIdExpected = 5
und mein Scheinobjekt 5
als ID zurückgibt, besteht mein Test. Ich verstehe es. Ich habe den Code getestet , um sicherzustellen, dass meine Code-Preforms das erwartete Objekt und die erwartete ID und nicht etwas anderes zurückgeben.
Das Argument, das ich bekommen werde, ist folgendes:
"Warum nicht einfach die Komponententests überspringen und Integrationstests durchführen? Es ist wichtig, die gespeicherte Datenbankprozedur und Ihren Code zusammen zu testen . Es scheint zu viel zusätzliche Arbeit zu sein, Komponententests und Integrationstests durchzuführen, wenn ich letztendlich wissen möchte, ob die Datenbank aufruft und der Code funktionieren. Ich weiß, dass die Tests länger dauern, aber sie müssen ausgeführt und getestet werden, so dass es für mich sinnlos erscheint, beides zu haben. Testen Sie nur, worauf es ankommt. "
Ich könnte es mit einer Lehrbuchdefinition verteidigen wie: "Nun, das ist ein Integrationstest und wir müssen den Code separat als Unit-Test testen und, yada, yada, yada ..." Dies ist ein Fall, in dem eine puristische Erklärung der Praktiken erfolgt Die Realität verliert sich. Ich stoße manchmal darauf und wenn ich die Argumentation hinter Unit-Testing-Code, der letztendlich von externen Abhängigkeiten abhängt, nicht verteidigen kann, kann ich keine Argumentation dafür abgeben.
Jede Hilfe zu dieser Frage wird sehr geschätzt, danke!