Junit4: @BeforeClass da superclasse não é executado

Criado em 6 mar. 2012  ·  7Comentários  ·  Fonte: junit-team/junit4

Ao contrário da afirmação em @BeforeClass annotation javadoc:
/** The <strong i="7">@BeforeClass</strong> methods of superclasses will be run before those the current class. */
O método anotado @BeforeClass da superclasse não é chamado se houver outra @BeforeClass subclasse.

public abstract class SuperTest {
    <strong i="13">@BeforeClass</strong>
    public static void beforeClass() throws Exception {
        fail("why don't you call me ?");    // never fails
    }
}

public class MyTestA extends SuperTest {
    <strong i="14">@BeforeClass</strong>
    public static void beforeClass() {
        fail("Thanks for calling");     // fails here
    }

    <strong i="15">@Test</strong>
    public void test() {
        fail("Failure expected from MyTestA.beforeClass()");  
    }
}

public class MyTestB extends SuperTest {
    <strong i="16">@BeforeClass</strong>
    public static void beforeClass() {
    }

    <strong i="17">@Test</strong>
    public void test() {
        fail("Failure expected from SuperTest.beforeClass()");    // fails here
    }
}

Comentários muito úteis

O método na superclasse é obscurecido pelo método com o mesmo nome na subclasse. Se você der nomes diferentes aos métodos @BeforeClass , eles serão executados na ordem correta.

Todos 7 comentários

O método na superclasse é obscurecido pelo método com o mesmo nome na subclasse. Se você der nomes diferentes aos métodos @BeforeClass , eles serão executados na ordem correta.

obrigado taral, o problema está resolvido então. Uma pequena menção no javadoc de @BeforeClass pode ser útil.

Aprendi a mesma coisa da maneira mais difícil. Como @gonzen disse, uma pequena menção em javadoc pode nos ajudar a evitar a situação por completo. Se fizer sentido, posso adicioná-lo ao javadoc e enviar um patch.

@amalakar , um patch javadoc seria definitivamente apreciado!

Aqui está a solicitação de pull: https://github.com/KentBeck/junit/pull/504

Eu também.

Eu com havia uma observação importante sobre: http://junit.sourceforge.net/javadoc/org/junit/Before.html dizendo que você deveria ver http://junit.org/javadoc/latest/ em vez disso, + um link para os novos documentos do readme.

Esta página foi útil?
0 / 5 - 0 avaliações