Несколько тестов JUnit с использованием FEST

Я написал несколько тестовых методов JUnit для проверки моего графического интерфейса Java Swing (используя FEST< /а>). Мой класс имеет следующий формат:

public class Tests
{

    @BeforeClass
    public static void beforeClass() throws Exception { ... }

    @Before
    public void before() throws Exception { ... }

    @After
    public void after() throws Exception { ... }

    @AfterClass
    public static void afterClass() throws Exception { ... }

    @Test
    public void testA() { ... }

    @Test
    public void testB() { ... }

    @Test
    public void testC() { ... }

}

Когда я запускаю этот класс в Eclipse, он запускает только тест testA, а не testB или testC. Если я закомментирую testA, запустится testB, поэтому каждый раз будет запускаться первый тест.

JUnit в Eclipse показывает «Runs: 2/3» после завершения первого теста, но не продвигается дальше или не показывает никаких ошибок.

Я что-то делаю не так? Я использую JUnit 4.8.1 и FEST 1.2.


person Tom W    schedule 29.01.2011    source источник


Ответы (2)


Я подозреваю, что у вас есть побочный эффект в testA, который блокирует выполнение кода в testB. Трудно сказать, что происходит без подробностей в testA и testB, но я могу дать вам некоторые общие указания.

Вы хорошо начали, закомментировав testA. Когда вы это сделаете, запустятся ли testB и testC?

Попробуйте углубиться в testA и медленно комментировать детали того, что находится под testA, пока вы не запустите тесты как testA, так и testB. Сделав это, вы, по крайней мере, будете знать, где проблема.

Например, если ваш код выглядит примерно так:

public void testA() {
    doX();
    doY();
    doZ();
    // Assert stuff
    ...
 }

закомментируйте все после doX() и посмотрите, что получится. Если это сработает, раскомментируйте doY() и посмотрите, что произойдет. Если это не сработало, перейдите к doX() и начните снова комментировать и повторно запускать тесты.

Это должно помочь вам точно определить, где что-то идет не так. Если вы все еще в тупике, когда выясните это, вернитесь и задайте вопрос по этим деталям.

Удачи в поиске ошибки!

person ideally_world    schedule 29.01.2011
comment
Спасибо за вашу помощь. Закомментировав все остальные методы и обнаружив, что каждый раз по-прежнему запускался только первый, я взглянул на методы beforeClass() и before(). Кажется, это была проблема с тем, как я использую FEST. У меня было window = new FrameFixture(frame) в методе before() вместо метода beforeClass(). После изменения это, кажется, работает нормально. - person Tom W; 29.01.2011

Кажется, ваш фрагмент кода в порядке.

Вы можете проверить, является ли каждый метод @Test независимым от других, каждый метод тестирования не должен использовать один и тот же контекст. Убедитесь, что @Before и @After ведут себя правильно.

person 卢声远 Shengyuan Lu    schedule 29.01.2011