<p>We have a junior programmer that simply doesn't write enough tests.<br>
I have to nag him every two hours, "have you written tests?"<br>
We've tried:</p>

<ul>
<li>Showing that the design becomes simpler</li>
<li>Showing it prevents defects</li>
<li>Making it an ego thing saying only bad programmers don't</li>
<li>This weekend 2 team members had to come to work because his code had a NULL reference and he didn't test it</li>
</ul>

<p>My work requires top quality stable code, and usually everyone 'gets it' and there's no need to push tests through. We know we can make him write tests, but we all know the useful tests are those written when you're into it.</p>

<p>Do you know of more motivations?</p>

If the junior programmer, or anyone, doesn't see the value in testing, then it will be hard to get them to do it...period.
I would have made the junior programmer sacrifice their weekend to fix the bug.  His actions (or lack there of) are not affecting him directly.  Also, make it apparent, that he will not see advancement and/or pay increases if he doesn't improve his skills in testing.
In the end, even with all your help, encouragement, mentoring, he might not be a fit for your team, so let him go and look for someone who does get it.