Используйте тест AssertJ Swing от Cucumber - PullRequest
1 голос
/ 02 июня 2019

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

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, но переменная окна остается нулевой.

1 Ответ

1 голос
/ 02 июня 2019

Аннотация @Before JUnit (@org.junit.Before) не работает с огурцом.
У огурца есть собственная аннотация @Before (@cucumber.api.java.Before):

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

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

...