My general rule of thumb is: If you need to add extra code to test something, then you are either testing the wrong thing or you have a design flaw (usually remedied by injecting something). If you can't observe the behavior from outside your class (which includes observing through dependencies) then you are testing internal behavior.

That said, testing things that have a temporal dependency is always hard. The only proper way to work around it is to provide you own abstraction, such as http://ayende.com/blog/3408/dealing-with-time-in-tests

What we could do here is change the access modifier to internal, and perhaps add the [InternasVisibleToAttribute](lhttp://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute(v=vs.110).aspx) on the test assembly, but I'm not sure it's worth the effort. 

Let's remove the _TESTING ONLY_ comment, and fill in the XML documentation for the `now` parameter and let's ship it ;)