Ich habe Array-basierte Stack-Datenstruktur zusammen mit entsprechenden Komponententests implementiert. Dieser Stack implementiert meine IStack-Schnittstelle. Also im Moment sieht mein UT Klasse etwas wie folgt aus:Dependency Injection in Komponententests
[TestClass]
public class Stack_ArrayBased_Tests
{
//check against empty collection
[TestMethod]
public void IsEmpty_NoElements()
{
var myStack = new Stack_ArrayBased_Example1(10);
var exp = true;
var act = myStack.IsEmpty();
Assert.AreEqual(exp, act);
}
Nun, ich bin über verlinkte Liste basiert Stapel zu implementieren. Dieser Stack erbt von derselben IStack-Schnittstelle.
Ich möchte Unit-Test auch die verkettete Liste Stack. Da beide von derselben Schnittstelle erben, sollte ich in der Lage sein, den bereits implementierten Komponententest zu nutzen, um unnötige Codeverdopplung zu vermeiden.
Was wäre der beste Weg, um zwei separate Komponententestklassen zu erstellen, eine für Array-basierten Stack und eine andere für Linked List-basierte Stacks, die dieselben Unit-Test-Methoden verwenden würden? Ich nehme an, Dependency Injection wäre eine Antwort, aber wie würde ich das machen?
Wie bei jeder anderen Codebasis verwendet werden Sie Code, der gehört Refactoring sollen beide Szenarien in eine eigene Klasse, so dass sie in verschiedenen Anwendungsfällen verwendet werden kann. Wenn Sie also bereits eine Implementierung für Testfall 1 * haben, refaktorieren Sie das Verhalten in eine eigene Klasse und verwenden Instanzen in beiden Tests. – HimBromBeere