Yeah, it seems like in general the unit tests shouldn't need to do anything super-internal that the regular code doesn't have to do. Most of the time, if I ever need to access private state from unit tests, it's code that checks that the internal state is correct (rather than mutating it); and even then, it seems questionable.