This is me going right back to basics with TDD for learning purposes.
I originally implemented Person.Surname as field of type object (the simplest possible way of passing the test.
I then added a test setting Person.Surname stating that the return value should be a string and set Person.Surname=20.
I 'fixed' the test by changing the implementation to use string rather than object. The test now long compiles due to static type checking, so I commented it out.
So I'm left with no way of leaving my intention in the test. Is there a way of having a failing test in this circumstance?
Update: I agree with Esko, that practically this isn't something you want to be doing. From a learning point of view, the point I was trying to make was that if I (or someone else at a later point in time) widens the type scope of my field (say from string to object) I won't have any directly failing unit tests. Maybe this isn't a bad thing afterall?