Я столкнулся с простым и умным (хотя и не полностью пуленепробиваемым) методом Скотта Делапа в
http://today.java.net/pub/a/today/2005/04/19/desktoplive.html.
Как указано в ответе FEST от mdma выше, можно использовать пользовательский RepaintManger, просто переопределив методы
addInvalidComponent(JComponent component)
и
addDirtyRegion(JComponent component, int x, int y, int w, int h)
и используйте
SwingUtilities.isEventDispatchThread()
чтобы проверить, находимся ли мы на AWT, вы можете довольно легко интегрировать это в JUnit, добавив
org.JUnit.Assert.fail("AWT Thread Violation")
в вашей процедуре проверки.
Логика здесь в том, что большинство (но не все) операции Swing вызывают перерисовку, которая в конечном итоге вызывает эти методы в RepaintManager, чтобы мы могли их перехватить и выполнить нашу проверку.
Александр Поточкин имеет хороший обзор различных методов здесь: http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html