我正在尝试学习Java Fest。这段代码来自:http://docs.codehaus.org/display/FEST/Getting+Started
import org.testng.annotations.*;
import org.fest.swing.fixture.FrameFixture;
public class FirstGUITest {
private FrameFixture window;
@BeforeClass public void setUpOnce() {
FailOnThreadViolationRepaintManager.install();
}
@BeforeMethod public void setUp() {
MyFrame frame = GuiActionRunner.execute(new GuiQuery<MyFrame>() {
protected MyFrame executeInEDT() {
return new MyFrame();
}
});
window = new FrameFixture(frame);
window.show(); // shows the frame to test
}
@AfterMethod public void tearDown() {
window.cleanUp();
}
@Test public void shouldCopyTextInLabelWhenClickingButton() {
window.textBox("textToCopy").enterText("Some random text");
window.button("copyButton").click();
window.label("copiedText").requireText("Some random text");
}
}
在eclipse中,这段代码显示了一些错误。我必须导入
import org.fest.swing.edt.FailOnThreadViolationRepaintManager;
尽管它在这部分显示错误:
@BeforeMethod public void setUp() {
MyFrame frame = GuiActionRunner.execute(new GuiQuery<MyFrame>() {
protected MyFrame executeInEDT() {
return new MyFrame();
}
});
在Myframe上显示错误。有人能解释一下这是什么原因吗?提前谢谢。
编辑:我将以下文件与我的项目关联:
- fest - swing testng - 1.2
- fest - swing - 1.2
错误是:
MyFrame can not be resolved to a type.
首先你应该使用AssertJ Swing;FEST过时了,不再维护了。但是由于AssertJ Swing共享类似的语法,因此转换将很容易。
MyFrame
不是FEST/AssertJ-Swing的一部分。它意味着你要为之编写应用程序的框架。所以使用JFrame或者其他框架的实现。
看一下AssertJ的例子(很抱歉发布了关于AssertJ的文章,但如果你想坚持使用FEST,应该可以根据你的目的调整代码)。它包含编译版本中的示例—因此您可以查看并试用一下,看看AssertJ Swing/FEST是否是适合您的工具。