When I taught in a programming codeschool, one of the lessons was the "Hostile Developer Pattern". It was designed to teach TDD, and did so by pairing students together. One was the tester, and wrote a test which would fail. The Developer student would then write the bare minimum code to pass the test. This forced the tester to learn how to write good tests over time.
At the end of the exercise the students switched places and tried again.