ExpectedOutput empty not supported
Ich habe gerade gemerkt, dass es nicht möglich ist (zumindest nicht soweit ich das beurteilen kann) zu fordern, dass nichts ausgegeben wird.
Beispiel:
Eine Zahl 'n' einlesen, wenn 'n > 0', dann wird 'n' ausgegeben, andernfalls wird nichts ausgegeben.
im ioTests.json hätte man dann diverse input/output-Paare (I:5-O:5; I:3-O:3) und dann eben als Input bspw. -1, das Output Feld würde man leer lassen oder ganz weglassen.
Der Test mit Input -1 ist in diesem Fall immer erfolgreich, egal ob etwas ausgegeben wird oder nicht
Quick Fix: (funktioniert für mein konkretes Szenario **UPDATE:** das funktioniert scheinbar doch nicht so wie ich mir das vorgestellt habe)
Im
if(testStep.getOutput() != null) {
...
if(testStep.isIgnoreFurtherChars()) { ... }
else {
realOutput = outputLineReader.readLine();
if(expectedOutput!=null && !expectedOutput.equals(realOutput)) {
fail(formatDebugHint(testStep.getFormattedFailureHint(), "After conversation \n%1$swe expected %2$s"
+ " but got '%3$s'", conversationDebugHint, expectedOutput, realOutput, LF.WITH_LINEFEED));
} else if(expectedOutput == null && realOutput != null) { // DIESER TEIL IST NEU
fail(formatDebugHint(testStep.getFormattedFailureHint(), "After conversation \n%1$swe expected %2$s"
+ " but got '%3$s'", conversationDebugHint, expectedOutput, realOutput, LF.WITH_LINEFEED));
}
}
}
Zu beachten ist, dass dann im ioTests.json File bei dem gewünschten IOTest (bsp Input = -1) das output-Feld explizit angegeben werden muss mit null als Parameter
-> "output": [null]
Ob das irgendwelche unerwünschten Nebeneffekte hat, kann ich im Moment nicht beurteilen.
Feedback:
Würde mich freuen, wenn sich das jemand ansehen kann :)
Liebe Grüße
Manuel
**UPDATE:** Mein quickfix hat leider doch nicht funktioniert.. Vielleicht gibt es Vorschläge, wie man das umsetzen könnte.