I think this is overthinking it. The only thing that matters are the collaborating interfaces. If you are writing a test case it should possible to act upon it through interfaces only. If you can’t do that then you probably screwed up the design and should refactor it. This is where SOLID comes in and black box testing.