Hallo, ich bin ein Neuling zu TDD-Stil-Programmierung in C# und ich habe viel zu kämpfen, um es richtig zu machen. Könnten Sie mir bitte Bescheid geben, wenn ich das richtig mache? Ich habe viele Tutorials verfolgt, aber es ist nicht gelungen. Ich bekomme den theoretischen Aspekt, aber wenn es darum geht, es praktisch umzusetzen, scheitere ich immer.mein Algorithmus üben mit TDD
Ich habe dieses Repository zum Üben tdd https://github.com/dev-test-tdd/AlgorithmPractice/. Ich habe angefangen, alle Algorithmen von Grund auf neu zu schreiben, um tdd zu verstehen. Zum Beispiel habe ich diese einfache Methode, um zu überprüfen, ob die angegebene Zeichenfolge ein Palindrom ist oder nicht.
Hier ist mein Test
[Test]
public void IsPalindrome3Test()
{
var sourceString = "civic";
var result = Program.IsPalindrome3(sourceString);
Assert.AreEqual(true, result);
}
und die Funktion
public static bool IsPalindrome3(string source)
{
int min = 0;
int max = source.Length - 1;
while(true)
{
if(min > max)
{
return true;
}
char a = source[min];
char b = source[max];
if(char.ToLower(a)!= char.ToLower(b))
{
return false;
}
min++;
max--;
}
}
Bin ich hier richtig, wenn Sie den Test zu schreiben? Bitte lassen Sie mich wissen, ob der gewählte Ansatz richtig ist. Irgendwelche Hinweise dafür wären toll !!
Anstelle von 'Assert.AreEqual (true, result);' könnten Sie 'Assert.IsTrue (result);' verwenden. Außerdem scheint Ihre Herangehensweise gut zu sein. Stellen Sie nur sicher, dass Sie einen negativen Komponententest schreiben, um sicherzustellen, dass die zu testende Methode nicht immer "wahr" zurückgibt. –
Warum überprüfen Sie einfach nicht, ob die Zeichenfolge ist die gleiche iterating durch alle Zeichen vorwärts und rückwärts –
Mit Blick auf das Beispiel, das Sie gegeben haben, wenn Sie diesen Test zuerst würden Sie mehr Tests haben, da es viel mehr mögliche Ergebnisse gibt als was du getestet hast. Grundsätzlich könnte ich den Test bestehen, den Sie einfach haben, indem Sie wahr zurückgeben. Denken Sie daran, dass der Schlüssel zu TDD nur darin besteht, zu schreiben, was notwendig ist, damit der Komponententest besteht. Das bringt dich dazu, einen anderen zu schreiben, der dich deinem Endziel näher bringt. @kai hat ein gutes Beispiel dafür. – JCisar