Используйте тест AssertJ Swing от Cucumber

У меня есть простой модульный тест, чтобы убедиться, что главное окно приложения не украшено:

public class MainWindowUT extends AbstractMainWindowTest {

    @Test
    public void whenApplicationIsStarted_thenMainFrameIsUndecorated() {
        @SuppressWarnings("boxing")
        Boolean isUndecorated = GuiActionRunner.execute(() -> window.target().isUndecorated());
        assertThat(isUndecorated).isTrue();
    }
}

AbstractMainWindowTest это:

public abstract class AbstractMainWindowTest extends AssertJSwingJUnitTestCase {

    protected FrameFixture window;

    @Override
    protected void onSetUp() {
        ScaleRuler frame = GuiActionRunner.execute(() -> new ScaleRuler());
        window = new FrameFixture(robot(), frame);
        window.show();
    }
}

ScaleRuler — это мой фрейм, который на данный момент ничего не делает, просто устанавливает Undecorated(true). Тест проходит нормально. Как мне выполнить тот же тест из Cucumber?

public final class WindowAspectSteps {

    @Then("the main window should be undecorated")
    public void checkMainWindowIsUndecorated() {
        //????
    }
}

Я попытался сделать WindowAspectSteps для расширения AbstractMainWindowTest, но переменная окна остается нулевой.


person Emil    schedule 02.06.2019    source источник


Ответы (1)


Аннотация @Before JUnit (@org.junit.Before) не работает с Cucumber.
Cucumber имеет свой собственный @ Перед аннотацией (@cucumber.api.java.Before):

На самом деле JUnit и Cucumber — это две разные платформы для выполнения тестов, поэтому у них есть свои собственные средства запуска тестов и связанные с ними средства (хотя некоторые из них являются общими с точки зрения логики).

В качестве обходного пути попробуйте добавить 2 отдельные аннотации @Before (junit и огурец) в метод установки тестового абстрактного класса или создайте два разных метода: один с @cucumber.api.java.Before, а другой с @org.junit.Before, которые оба делегируют общий метод, выполняющий настройку. обработка.

person davidxxx    schedule 02.06.2019