Выполните setup () один раз, чтобы обойти TestSuit - PullRequest
0 голосов
/ 18 августа 2010

У меня есть 2 файла:

xxxxxTest.java [ см. Это ]

public class xxxxxTest extends TestCase {

    // Run setup only once
    public static Test suite() {
        TestSetup setup = new TestSetup(new TestSuite(xxxxxTest.class)) {
            protected void setUp() throws Exception {
              //Some init which i need only once
            }

            protected void tearDown() throws Exception {

            }
        };
        return setup;
    }

    public void testMyFirstMethodTest() {
        assertNotNull(do stuff here);
    }
}

AllTests.java

public class AllTests {
    public static Test suite() {
        TestSuite suite = new TestSuite("Test for xxxxxx");
        //$JUnit-BEGIN$
        suite.addTestSuite(xxxxxTest.class);
        //$JUnit-END$
        return suite;
    }
}

Итак,Мой отдельный тест (xxxxxTest.java) работает нормально, именно так, как я хочу. Когда я запускаю свой набор тестов (AllTests.java), он не проходит, потому что init в setup (), который я предоставил в xxxxxTest.java, не выполняется.

Есть предложения?

ОБНОВЛЕНИЕ

Я пробовал @BeforeClass в JUnit 4. Но это не помогло, потому что в моем методе ssetUp (),Я запускаю встроенный сервер Jetty (server.start ()), сервер отлично работает с кодом, который я разместил, но когда я делаю то же самое с @BeforeClass, он не работает.

Ответы [ 2 ]

0 голосов
/ 18 августа 2010

Похоже на мысль Мануэля: нужно ли вам использовать JUnit 3? Тогда лучшим вариантом будет статический инициализатор {} на уровне класса.

В противном случае, я рекомендую использовать JUnit 4, который имеет конструкцию, которая может иметь:

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;


public class xxxxxTest  {

    @BeforeClass
    public static void beforeClass() {
        //Some init which i need only once
    }

    @Test
    public void testMyFirstMethodTest() {
        Assert.assertNotNull("");//do stuff here);
    }
}
0 голосов
/ 18 августа 2010

В редких случаях я также взламывал статические при использовании JUnit3.

В вашем случае:

  • попробуйте static {} initializer попробовать, может быть, это работает в противоположность вашей статической инициализации.
  • есливозможно обновление до JUnit4 и использование аннотации @BeforeClass (она запускается один раз для тестового класса).Другие ваши тестовые классы JUnit3 должны также работать с JUnit4.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...