2014-11-25 10 views
5

ich auf einigen Unit-Tests von einem anderen Entwickler geschrieben habe, kommen zu vergleichen, die regelmäßig eine überladene Version von Assert.AreEqual wie so verwenden:Wenn Kultur zu übergeben, wenn Strings Assert.AreEqual() in C#

Assert.AreEqual(stringparamX, stringParamY, true, CultureInfo.InvariantCulture); 

stringParamX gesetzt innerhalb der Unit-Test und stringparamY wird das Ergebnis aus dem System im Test sein.

Es ist möglich, dass dieser Code in andere Länder portiert wird und diese Tests ausgeführt werden können. Aber wenn ich mir die MSDN docs for Culture anschaue, kann ich nicht umhin zu denken, dass die Weitergabe von CultureInfo.InvariantCulture hier unnötige Komplexität hinzufügt. Ich bin mir nicht sicher, welchen Einfluss das Entfernen auf die Tests hätte, wenn es in anderen Kulturen durchgeführt würde.

Im Zusammenhang mit Komponententests in meiner Situation, warum sollte ich (oder nicht) schreiben behauptet so?

Antwort

3

Es gibt keinen Grund, diese Überladung zu verwenden, wenn Sie die Kultur als InvariantCulture angeben, da dies der Standardwert ist.

Von the documentation here:

Die invariante Kultur wird für den Vergleich herangezogen.

Hinweis, dass es einige Fälle, in denen es einen Unterschied machen würde, wenn Sie nicht die InvariantCulture verwendet, mit der berüchtigtsten "The Turkish I problem" zu sein.

Der folgende Code zeigt das Problem:

Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR"); 

Assert.AreEqual("i", "I", true, CultureInfo.CurrentCulture); // This throws. 
Assert.AreEqual("i", "I", true, CultureInfo.InvariantCulture); // This doesn't throw. 
Assert.AreEqual("i", "I", true);        // This doesn't throw. 

Beachten Sie jedoch, dass Sie nicht berührt werden, da Sie die invariante Kultur verwenden.

2

Die MSDN documentation für Assert.AreEqual dass nehmen im Abschnitt "Hinweise", die Culture Staaten nicht:

Die invariante Kultur für den Vergleich

Wenn true verwendet wird, dann ist es explizit unnötig, sie explizit anzugeben. Es ist dann ein strittiger Punkt darüber, ob das Explizieren besser ist.

Das hängt davon ab, was getestet wird, ob Kultur für einen Zeichenfolge-Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung berücksichtigt werden sollte.

Verwandte Themen