gpt4 book ai didi

java - 如何使用 AssertJ 对单个 Swing 组件进行单元测试?

转载 作者:搜寻专家 更新时间:2023-11-01 03:50:01 24 4
gpt4 key购买 nike

是否有关于如何使用 AssertJ 测试单个组件或 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?
}
}

最佳答案

注意有一个 mailing list在那里您可能会收到特定问题的快速答案,因为那里可能只有少数 AssertJ Swing 用户。

有一个 examples project这不是很大,但应该成为新用户如何使用 AssertJ Swing 的一个很好的引用。

不幸的是,您要测试的“应用程序”是一个,AssertJ Swing 并不针对该应用程序。因为它似乎只包含颜色,所以您没有太多选择。 AssertJ Swing 旨在成为功能测试工具,而不是精确的像素测试工具。因此它并没有很好地支持进行像素测试。

对于颜色,JPanelFixture 提供了foreground()background() 来做如下事情:

panel.background().requireEqualTo(Color.RED);

但如前所述,这不是图书馆的主要目的。

关于java - 如何使用 AssertJ 对单个 Swing 组件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31100486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com