[TestMethod] public void EinTest() { IFoo sut = new Foo();
var actual = sut.DoSomething();
Assert.IsNotNull(actual); }
Nun habe ich für IFoo mehrere Realisierungen. Da ich aber nur das Interface prüfe habe ich keine Lust mir alle Tests zu kopieren, denn dann müsste ich auch bei Änderungen alle Tests nach ziehen.
Deshalb würde ich eigentlich gern ein und den selben Test mehrfach ausführen lassen. Jeweils mit anderen SUTs eben. Geht so etwas? Gibt es bei MS Test ein Attribut oder eine Klasse dafür? Die Ergebnisse müssten natürlich für alle Durchläufe angezeigt werden.
[Test, TestCaseSource("GetFooCases")] public void EinTest(IFoo sut) { var actual = sut.DoSomething(); Assert.IsNotNull(actual); }
public IEnumerable<TestCaseData> GetFooCases() { yield return new TestCaseData(null); yield return new TestCaseData(new Foo()); yield return new TestCaseData(new Foo(new Bar)); }
Ich weiss nicht, ob es was ähnliches unter ms-test gibt, aber vielleicht bringt dich das auf Ideen?!
Geht das auch auf Klassenebene? Sprich, kann ich einem kompletten Testscenario einen Parameter übergeben der dann in allen Testfällen (Methoden) Gültigkeit hat? Genauer geht es mir in diesem Fall darum das Stratgie-Pattern möglichst einfach abzutesten und da währe es gut wenn für jedes SUT alle Testfälle auch nacheinander ausgeführt würden. Wenn ich es per Methoden-Parameter mache, würden aber für jeden Testall alle SUTs getestet und nicht unbedingt für jedes SUT alle Teställe ausgeführt werden. Sieht im Ergebnis halt etwas "ungünstig" aus.
[TestClass] public abstract class IFooTest { protected IFoo _sut;
[TestMethod] public void EinTest() { IFoo sut = new Foo();
var actual = _sut.DoSomething();
Assert.IsNotNull(actual); } }
[TestClass] public class TestFoo1 : TestIFoo { [TestInit] public void TestInit() { _sut = new Foo1(); } }
[TestClass] public class TestFoo2 : TestIFoo { [TestInit] public void TestInit() { _sut = new Foo2(); } }
– Gast 16.05.2011
Vererbung von Test-Klassen funktioniert bei MS-Test leider nicht gut. Schreibe ich einen Test in der Basisklasse kann der unter Umständen in der Ableitung nicht korrekt ausgeführt werden. Weiterhin funktioniert die komplette Vererbung nicht über Projektgrenzen hinweg :(
Genauer geht es mir in diesem Fall darum das Stratgie-Pattern möglichst einfach abzutesten und da währe es gut wenn für jedes SUT alle Testfälle auch nacheinander ausgeführt würden. Wenn ich es per Methoden-Parameter mache, würden aber für jeden Testall alle SUTs getestet und nicht unbedingt für jedes SUT alle Teställe ausgeführt werden. Sieht im Ergebnis halt etwas "ungünstig" aus.