Swing FEST:断言JButton正在显示某个图标

Swing FEST:断言JButton正在显示某个图标,swing,jbutton,fest,Swing,Jbutton,Fest,在我的FEST测试中,我试图断言JButton有一个特定的ImageIcon。我在org.fest.swing.fixture.JButtonFixture上没有找到相应的方法使用target怎么样 Assert.assertNotNull( jButtonFixture.target.getIcon() ); 您可以编写自己的ButtonTexture包装器,该包装器提供了一种方法 IconButtonFixture iconButtonFixture = new IconButtonFix

在我的FEST测试中,我试图断言JButton有一个特定的ImageIcon。我在org.fest.swing.fixture.JButtonFixture上没有找到相应的方法

使用target怎么样

Assert.assertNotNull( jButtonFixture.target.getIcon() );

您可以编写自己的ButtonTexture包装器,该包装器提供了一种方法

IconButtonFixture iconButtonFixture = new IconButtonFixture(buttonFixture.robot, buttonFixture.target);
iconButtonFixture.requireIcon(new ImageIcon( "file:/C:/Users/admin/workspace/Project/bin/image/icon.gif" ));
IConButtonTexture类:

import static org.fest.swing.edt.GuiActionRunner.execute;

public class IconButtonFixture extends JButtonFixture {

    private IconButtonDriver driver;

    public IconButtonFixture(Robot robot, JButton target) {
        super(robot, target);
        driver = new IconButtonDriver(robot);
      }

    public JButtonFixture requireIcon(Icon icon) {
        driver.requireIcon(target, icon);
        return this;
    }

    private class IconButtonDriver extends AbstractButtonDriver {
        public IconButtonDriver( Robot robot ) {
            super( robot );
        }
        public void requireIcon(final JButton button, Icon icon) {
            Icon buttonIcon = execute(new GuiQuery<Icon>() {
                protected Icon executeInEDT() {
                  return button.getIcon();
                }
              });
            if(!icon.toString().equals( buttonIcon.toString() )) {
                Assert.failNotEquals( "The Button has not the expected Icon.", icon, button.getIcon() );
            }

        }
    }
}
import static org.fest.swing.edt.GuiActionRunner.execute;
公共类IConButtonTexture扩展了JButtonTexture{
私人IconButtonDriver司机;
公共图标按钮配置(机器人,按钮目标){
超级机器人(机器人,目标);
驾驶员=新IconButtonDriver(机器人);
}
公共JButtonFixture requireIcon(图标){
驱动程序.requireIcon(目标,图标);
归还这个;
}
私有类IconButtonDriver扩展AbstractButtonDriver{
公共ICONBUTTONDRIVE(机器人){
超级机器人;
}
公共无效要求图标(最终按钮、图标){
Icon buttonIcon=execute(新的GuiQuery(){
受保护的图标executeInEDT(){
返回按钮。getIcon();
}
});
如果(!icon.toString().equals(buttonIcon.toString())){
Assert.failNotEquals(“按钮没有预期的图标。”,Icon,Button.getIcon());
}
}
}
}

太好了。我认为,如果没有直接询问按钮的线程问题,这应该是可行的?