To paraphrase (badly): Q: Should every class have a matching unit test class? Uncle Bob's response: It is a bad idea to couple the tests to the structure of the classes, because this will make the tests fragile. He also gives a recommendation on how to avoid this.
I don't know how to do fancy stuff, so I just did a simple Submarine class with methods to update its values in the specified way. I hardly had to change it for the second part. I work in Ruby for my day job, so I'm taking this as a opportunity to remember my Java.