我有一個(gè)簡(jiǎn)單的單元測(cè)試來確保應(yīng)用程序的主窗口是未修飾的: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)。測(cè)試運(yùn)行良好。如何從 Cucumber 執(zhí)行相同的測(cè)試?public final class WindowAspectSteps { @Then("the main window should be undecorated") public void checkMainWindowIsUndecorated() { //???? }}我試圖讓 WindowAspectSteps 擴(kuò)展 AbstractMainWindowTest,但窗口變量仍然為空。
1 回答

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
@Before
JUnit ( )的注釋@org.junit.Before
不適用于 Cucumber。
Cucumber 有自己的 @Before 注解( @cucumber.api.java.Before
) :
事實(shí)上,JUnit 和 Cucumber 實(shí)際上是兩個(gè)不同的測(cè)試運(yùn)行器平臺(tái),因此擁有自己的測(cè)試運(yùn)行器和相關(guān)設(shè)施(而有些在邏輯方面是通用的)。
作為解決方法,嘗試@Before
在測(cè)試抽象類的設(shè)置方法上添加 2 個(gè)不同的注釋(junit 和 cucumber 的)或創(chuàng)建兩個(gè)不同的方法:一個(gè)與@cucumber.api.java.Before
另一個(gè)@org.junit.Before
都委托給執(zhí)行設(shè)置處理的通用方法。
添加回答
舉報(bào)
0/150
提交
取消