Ho appena affrontato questo problema oggi e mi chiedo se qualcuno ha qualche idea sul perché questo test potrebbe fallire (a seconda della cultura). Lo scopo è quello di verificare se il testo del test contiene due spazi uno accanto all'altro, il che corrisponde a string.IndexOf
(anche se dico alla stringa di sostituire tutte le occorrenze di due spazi uno accanto all'altro). Dopo alcuni test sembra che \xAD
causi questo problema in qualche modo.stringa IndexOf e Sostituisci
public class ReplaceIndexOfSymmetryTest
{
[Test]
public void IndexOfShouldNotFindReplacedString()
{
string testText = "\x61\x20\xAD\x20\x62";
const string TWO_SPACES = " ";
const string ONE_SPACE = " ";
string result = testText.Replace(TWO_SPACES, ONE_SPACE);
Assert.IsTrue(result.IndexOf(TWO_SPACES) < 0);
}
}
non sono sicuro se questo sta andando essere il problema, ma se si dispone di 3 posti l'uno accanto all'altro in questo test, allora si finirà con 2 accanto all'altro, alla fine di esso. –
Il test ha successo per me. Sei sicuro che il codice che hai postato sia lo stesso del codice che stavi testando? –
Il problema è 'IndexOf' usa la ricerca specifica della cultura mentre' Replace' usa una ricerca ordinale. @Chris: il punto è che dovrebbe fallire. –