Ostatnio w programie znalazłem bład typu:
private string a;
public string A
{
get { return a; }
set { a = value; }
}
public string B
{
get { return a; }
set { a = value; }
}
Musiałem na szybko przekopiować kod i zapomnieć zmienić zmiennej leżącej pod property.
Mam pytanie czy da się w ogóle ustrzec przed takimi błędami czy jedynie można je wykryć podczas działania aplikacji i potem bawić się w detektywa co jest nie tak.
Przecież nie będę pisał dla każdej klasy testów typu:
obiekt.A = "1";
obiekt.B = "2";
obiekt.C = "2";
obiekt.D = "2";
Assert.AreEqual(obiekt.A, "1");
i tak dla każdego property... Pojedyncze testy nie wykazują błędów, dopiero uruchomienie ich w konkretnej sekwencji może ujawnić tego typu błąd. Żeby wykryć ten sam błąd podczas działania programu też należałoby wykonać konkretne czynności w konkretnej kolejności - mogło się zdarzyć że ten błąd istniałby latami bez wykrycia.
Tak więc - czy jest to rodzaj błędu który musi czekać na ręczne wykrycie?