assertj / assertj/assertj-swing

JFileChooserFixture.selectFile() fails if called twice in OSX

オープン
#191 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る
OS X
主要言語
Java
スター
121
フォーク
52
PR マージ指標
30日以内にマージされた PR はありません

説明

Hi,

The following second Test fails on OSX. On Windows it works like expected. It might be a Swing issue in the MAC VM.

```
import java.io.File;

import org.assertj.swing.core.Robot;
import org.assertj.swing.edt.GuiActionRunner;
import org.assertj.swing.edt.GuiQuery;
import org.assertj.swing.finder.JFileChooserFinder;
import org.assertj.swing.fixture.FrameFixture;
import org.assertj.swing.fixture.JFileChooserFixture;
import org.assertj.swing.junit.testcase.AssertJSwingJUnitTestCase;
import org.junit.Test;

public class FileChooserTest extends AssertJSwingJUnitTestCase {

protected FrameFixture window;
protected Robot robot;

@Override
protected void onSetUp() {

FileChooserFrame mainFrame = GuiActionRunner
.execute(new GuiQuery() {

protected FileChooserFrame executeInEDT() {

return new FileChooserFrame();
}
});
robot = robot();
window = new FrameFixture(robot, mainFrame);
}

@Test
public void openFileChooser() {
selectFile();

}

@Test
public void openFileChooserAgain() {
selectFile();
}

private void selectFile() {
String seperator = System.getProperty("file.separator");
String currentDir = new File("").getAbsolutePath() + seperator + "src";
String filePath = currentDir + seperator + "FileChooserFrame.java";

window.button().click();
JFileChooserFixture fileChooser = JFileChooserFinder.findFileChooser()
.using(robot);

fileChooser.setCurrentDirectory(new File(currentDir));
fileChooser.selectFile(new File(filePath));
fileChooser.approve();

window.textBox().requireText(filePath);
}

}
```

```
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.io.File;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class FileChooserFrame extends JFrame {

public FileChooserFrame() {

setSize(200, 100);
setTitle(getClass().getCanonicalName());
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new FlowLayout());

JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(200, 20));
JButton button = new JButton("FileChooser");
JFrame parentFrame = this;
button.addActionListener(new AbstractAction() {

@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int returnVal = fileChooser.showOpenDialog(parentFrame);

if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
textField.setText(file.getAbsolutePath());
}
}

});

add(textField);
add(button);
setVisible(true);
}

public static void main(String[] args) {
new FileChooserFrame();
}
}
```

```

4.0.0
AssertJSwingTest
AssertJSwingTest
0.0.1-SNAPSHOT

src


maven-compiler-plugin
3.3

1.8
1.8






org.assertj
assertj-swing-junit
3.1.1

```

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、提供された FileChooserTest を macOS で再現し、特に selectFile() の 2 回目の呼び出しを確認します。次に、JFileChooserFixture.selectFile() と、関連するファイル選択 fixture のテストを調べます。1 回目と同様に、2 回目の呼び出しでも同じファイルを正常に選択して承認でき、Windows の動作を壊さなければ完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
desktop, testing-qa
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
32/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。