> I have read that the changes to the code base should not change the unit tests. Let me says this straight: **this is nonsense**. I don't have that book at hand, and you did not tell us which section lead you to this interpretation, still I am convinced you must have misread something. Unit test will not be required to change when an implementation of a certain (externally visible) behaviour changes, **as long as the behaviour itself stays the same**. But when the implementation changes up to the point where the behaviour changes, then the unit tests for this behaviour obviously have to change as well. For example, whether the `ConsoleGreetingService.ShowGreeting` is implemented like Console.WriteLine("Hello!"); or const string greetings = "Hello!"; Console.WriteLine(greetings); or Console.WriteLine(GetHelloInCertainLanguage(new CultureInfo("en")) + "!"); should not require any change to a unit tests which verifies the expected string is printed to the console. Replacing a console output by some GUI output, however, is a change which obviously changes the externally visible behaviour.