Grundsätzlich, wenn Ihr ganzer Code nur x = y != ... y : string.empty
ist, benötigen Sie zwei verschiedene Test-Fälle, einen für die Bedingung, und eine für sie scheitert.
Dies kann auf zwei Arten erreicht werden. Man wäre ein Test-Methode für jeden Fall zu schaffen:
string MethodToTest(string y) {
return y != /* whatever your condition is */ ? y : string.empty
}
[Test]
public void Test1() {
Assert.AreEqual(MethodToTest("PassingCondition"), "PassingCondition");
}
[Test]
public void Test2() {
Assert.AreEqual(MethodToTest("NotPassingCondition"), string.empty);
}
Andere Möglichkeit wäre, ein Verfahren zu schaffen, und fügen Sie TestCase
-Attribut hinzu:
[TestCase("PassingCondition", Result = "PassingCondition")]
[TestCase("NotPassingCondition", Result = string.empty)]
public bool TheTest(string y) {
return MethodToTest(y);
}
jedoch beide appraoches in Mittel gleich sind Code-Abdeckung. Es hängt vom tatsächlichen Zustand ab, wie Sie die Codeabdeckung erreichen. Aber Sie haben nicht die tatsächliche Bedingung gestellt, die es uns unmöglich gemacht hat, diesen spezifischen Punkt zu beantworten.
EDIT: Wie Sie auch Rhino-Mocks (die ich nicht kenne) zur Verfügung gestellt habe, nehme ich an, was Sie übergeben, da die Bedingung von einer Methode zurückgegeben wird, die Sie verspotten möchten. So verspotten Sie diese Methode, sobald Sie eine vorübergehende Bedingung zurückgeben, und eine, die eine versagende Bedingung zurückbringt.
Könnten Sie bitte den ** echten ** Code hinzufügen? Der von Ihnen bereitgestellte Code wird nicht einmal kompiliert! Außerdem sollte eine 100% ige Codeabdeckung nicht nur um ihrer selbst willen ein Ziel sein. Was sind die Anwendungsfälle und/oder Anforderungen, die Sie testen müssen? –
Entschuldigung, wir können den echten Code nicht für das Problem der Einhaltung bereitstellen, aber wir wollen nur wissen, wie wir einen ternären Operator mit einer assert-Anweisung unter Code-Coverage abdecken können. Außerdem müssen wir es gemäß unserem Anwendungsfall unter der Code-Abdeckung abdecken. –
Im Grunde benötigt man zwei Testfälle für 100% Deckung, einen für die Bedingung 'y! = ...' bestanden und einen dafür. Abhängig von dieser Bedingung müssen Sie möglicherweise weitere Fälle hinzufügen. Implementieren Sie also entweder zwei Testmethoden oder erstellen Sie eine und wenden Sie das 'TestCase'-Attribut mit einem' Result'-Parameter darauf an. – HimBromBeere