是否有关于如何使用AssertJ测试单个Component或JComponent的示例?
Getting started guide显示了使用主类测试整个应用程序的奇怪示例,该类没有足够的粒度。我希望首先测试自定义组件。
更新
假设我有以下组件:
package tests;
import javax.swing.*;
import java.awt.*;
public class JCustomPanel extends JPanel {
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
g.fillRect(0, 0, getWidth(), getHeight());
}
}
我希望检查它是否显示为红色。怎么写?
package tests;
import org.assertj.swing.edt.FailOnThreadViolationRepaintManager;
import org.assertj.swing.fixture.JPanelFixture;
import org.assertj.swing.testing.AssertJSwingTestCaseTemplate;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class Test01 extends AssertJSwingTestCaseTemplate {
private JPanelFixture panel;
@BeforeClass
public static void setUpOnce() {
FailOnThreadViolationRepaintManager.install();
}
@Before
public void setUp() {
panel = new JPanelFixture(robot(), new JCustomPanel());
}
@Test
public void testColorIsRed() {
//what to write here?
}
}
答案 0 :(得分:2)
请注意,mailing list您可能会收到针对该特定问题的快速答案,因为那里可能只有少数AssertJ Swing用户。
examples project不是很大,但应该成为新用户关于如何使用AssertJ Swing的良好参考。
不幸的是'应用程序'你尝试测试的是一个,AssertJ Swing并不瞄准。因为它似乎只含有颜色,所以你没有多少选择。 AssertJ Swing旨在成为功能测试工具,而不是精确的像素测试工具。因此,对于进行像素测试并没有很好的支持。
对于颜色,JPanelFixture
提供foreground()
和background()
来执行以下操作:
panel.background().requireEqualTo(Color.RED);
但据说这不是图书馆的主要目的。
答案 1 :(得分:-2)
我正在使用assertj-swing,并且认为你不能用它来验证自定义绘画。 - 来自任何灯具的前景()实际上正在调用其组件。所以他们对你的案子没有帮助。
另一个选项是将一些绘制消息记录到自定义绘制组件中并验证消息。它可能太难看但有效。