Once the problem is suspected junit can be used to prove the problem is real but it is not suited for enforcing the best practice being violated here.
"Singletons shouldn't have state."
That's a sentence more at home in a coding standards document and perhaps enforced with a static code analysis tool.
Trying to prove that something DOESN'T have any concurrency issues by throwing threads at it is next to impossible. If you do, and you get lucky, you might prove it does have problems. You'll never prove it doesn't.
Much better to know and follow best practices and get some one else to look over your code.
Actually I'm not 100% sure singletons should never have state. But when they do they'd better be synchronized or immutable if they are being shared across threads.