Como esperar por um thread que gera seu próprio thread?

Estou tentando testar um método que funciona em um thread separado, simplificado é assim:

public void methodToTest()
{
    Thread thread = new Thread()
    {
        @Override
        public void run() {
            Clazz.i = 2;
        }
    };
    thread.start();
}

No meu teste de unidade, quero testar o Clazz.i == 2, mas não posso fazer isso porque acho que a declaração é executada antes que o segmento altere o valor. Pensei em usar outro thread para testá-lo e, em seguida, use join para aguardar, mas ele ainda não funciona.

SSCCE:

@Test
public void sscce() throws InterruptedException
{
    Thread thread = new Thread()
    {
        @Override
        public void run() {
            methodToTest()
        }
    };
    thread.start();     
    thread.join();  
    AssertEquals(2, Clazz.i);
}

public static class Clazz
{
    public static int i = 0;
}

Eu acho que isso ocorre porque o código principal do teste cria um encadeamento que está aguardando (unido) para o 2º encadeamento, mas o segundo encadeamento não faz o trabalho, cria outro encadeamento para fazer o trabalho e termina, que continua o primeiro enquanto o terceiro segmento faz oClazz.i = 2 após a afirmação.

Como posso fazer com que o primeiro thread aguarde pelo iníciobem como quaisquer threads iniciados por esse segmento?