FEST:断言JButton正在显示某个Icon

问题描述

| 在我的FEST测试中,我尝试断言JButton具有特定的ImageIcon。我在org.fest.swing.fixture.JButtonFixture上找不到对应的方法     

解决方法

        您可以编写自己的ButtonFixture包装器,该包装器提供了一种方法。
IconButtonFixture iconButtonFixture = new IconButtonFixture(buttonFixture.robot,buttonFixture.target);
iconButtonFixture.requireIcon(new ImageIcon( \"file:/C:/Users/admin/workspace/Project/bin/image/icon.gif\" ));
IconButtonFixture类:
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() );
            }

        }
    }
}
    ,        那使用目标呢?
Assert.assertNotNull( jButtonFixture.target.getIcon() );