This is a very weak test, too, because it only check the syntax of the contract, and not the semantics. The compile-time type checker runs these tests for us when we work in languages like Java/C#/Haskell that have them.
Don't get me wrong: it's better than nothing, but it's still weak.
Good news: I find that the more I practise this approach, the more my design tends towards modules that depend on very simple contracts in other modules, reducing the risk.