本文介紹了Github操作的Swing UI測(cè)試的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我使用AssertJ-Swing和JUnit5為我的Java應(yīng)用程序進(jìn)行了幾個(gè)UI測(cè)試。我在本地運(yùn)行這些測(cè)試時(shí)沒(méi)有遇到任何問(wèn)題,但一旦我將它們推入Github Actions上的持續(xù)集成,其中一些測(cè)試就會(huì)失敗。
.yml
如下所示:
...
jobs:
build:
runs-on: ubuntu-latest
env:
workdir: idTest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Build with Maven
run: >
xvfb-run mvn verify
working-directory: ${{ env.workdir }}
如您所見(jiàn),我正在使用xvfb-run
無(wú)頭運(yùn)行測(cè)試,對(duì)于我的簡(jiǎn)單測(cè)試來(lái)說(shuō),這應(yīng)該就足夠了。
由于未選擇項(xiàng)而導(dǎo)致(有時(shí))失敗的愚蠢示例測(cè)試:
@Test
@GUITest
void test() {
Item item = new Item("name");
GuiActionRunner.execute(() -> view.getListModel().addElement(item));
window.list("list").selectItem(0);
window.list("list").requireSelectedItems(0);
}
奇怪的是,測(cè)試有時(shí)會(huì)通過(guò),有時(shí)不會(huì)。按鈕上的click()
也會(huì)發(fā)生這種情況。
我還嘗試在Windows下(不需要xvfb
運(yùn)行)在Github操作上運(yùn)行測(cè)試,沒(méi)有任何問(wèn)題,所以我猜xvfb
是這里的問(wèn)題所在。
有人知道問(wèn)題出在哪里嗎?如果有人有任何建議,我也愿意嘗試xvfb
以外的其他解決方案。謝謝。
推薦答案
原來(lái)在我的視圖類(lèi)中有這樣的東西:
public class MyView extends JFrame{
private CardLayout layout;
private JPanel myPane;
public MyView() {
setResizable(false);
setTitle("View");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
layout = new CardLayout();
getContentPane().setLayout(layout);
myPane = new JPanel();
getContentPane().add(myPane, "pane");
layout.show(getContentPane(), "layout");
pack();
setLocationRelativeTo(null);
}
}
刪除最后三行為我修復(fù)了它。我想他們是在干擾xvfb
。而且,它們似乎不會(huì)給代碼本身增加任何價(jià)值,刪除它們是安全的。
這篇關(guān)于Github操作的Swing UI測(cè)試的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,