ใช้การทดสอบ AssertJ Swing จากแตงกวา

ฉันมีการทดสอบหน่วยอย่างง่าย ๆ เพื่อให้แน่ใจว่าหน้าต่างหลักของแอปพลิเคชันไม่ได้รับการตกแต่ง:

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 คือเฟรมของฉัน ซึ่งในขณะนี้ไม่ได้ทำอะไรเลย เพียงแค่ setUndecorated(true) การทดสอบดำเนินไปด้วยดี ฉันจะทำแบบทดสอบเดียวกันจากแตงกวาได้อย่างไร

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 มี own @ ก่อนคำอธิบายประกอบ (@cucumber.api.java.Before) :

อันที่จริง JUnit และ Cucumber เป็นแพลตฟอร์มทดสอบที่แตกต่างกันสองแพลตฟอร์มจริง ๆ และมีตัวทดสอบและสิ่งอำนวยความสะดวกที่เกี่ยวข้องเป็นของตัวเอง (ในขณะที่บางแพลตฟอร์มก็เป็นเรื่องธรรมดาในแง่ของตรรกะ)

วิธีแก้ปัญหาเบื้องต้น ให้ลองเพิ่มคำอธิบายประกอบ @Before ที่แตกต่างกัน 2 รายการ (ของ Junit และของแตงกวา) ในวิธีการตั้งค่าของคลาสนามธรรมการทดสอบ หรือสร้างวิธีที่แตกต่างกันสองวิธี : วิธีแรกด้วย @cucumber.api.java.Before และอีกวิธีด้วย @org.junit.Before ซึ่งทั้งสองวิธีมอบหมายให้กับวิธีทั่วไปที่ทำการตั้งค่า กำลังประมวลผล.

person davidxxx    schedule 02.06.2019