java - 如何对 JFrame 进行 TDD?

标签 java tdd jframe

我正在处理一个新项目,我想在屏幕上显示一些数据。我开始使用 TDD,这对我来说是新的,但我喜欢这个想法并且到目前为止相处得很好。

我设置了一个 JFrame,添加了一个 Textarea 并将文本放在那里,但我如何才能正确测试它?或者在我这边的 TDD 上下文中这是错误的想法?我想确定(以 TDD 方式)数据是否正确显示!显示的文本的创建 被测试正确覆盖,但显示 没有。

这是一个完全简化的例子:

public class MyTextDisplay {
    public static void main(String[] args) {
        JFrame my_frame = new JFrame("DisplaySomeText");
        my_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTextArea textArea = new JTextArea(5, 20);
        textArea.setEditable(false);

        my_frame.add(textArea);
        my_frame.setVisible(true);

        //this would be in a separate method
        textArea.append("Hello World");
    }
}

最佳答案

TDD 要求您以不同的方式思考问题。在实际为解决方案编写任何代码之前,您首先要确定要测试的内容以及测试方式。

对于 GUI,这可能会变得非常棘手,老实说,您的 GUI 永远不应包含任何可能位于单独层中的逻辑。例如,显示的值应该来自与 GUI 无关但可以单独测试的对象。这允许您开发与显示( View )分开的主要业务逻辑(模型和 Controller )。这就是 MVC 模式。测试驱动开发只是意味着您在编写代码之前测试您能做的事情,并且随着您添加更多代码,更多测试将开始通过。

我宁愿专注于我的设计,并确保生成文本值的任何内容都按预期工作。 GUI 应该是“哑巴”的,只专注于显示或检索值,很少关心显示的值是否确实正确。

众所周知,GUI 很难使用自动化工具进行测试(正确测试),因此我会尽可能避免这种情况,并尽可能将我的 GUI 与我的实际应用程序分离。然后您可以测试 GUI 一次,以确保它显示它应该显示的内容,并专注于业务逻辑,而不必在 GUI 上进行连续测试,因为您没有接触该代码。

关于java - 如何对 JFrame 进行 TDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647603/

相关文章:

google-maps - Java - Google map 将地址转换为坐标

java - 我需要为我的应用程序创建一个新网络

tdd - TDD 如何驱动设计?

java - JFrame 和矩形

java - 在 java 中使用 apache poi 在现有 Excel 文件中追加数据

java - 如何为 Java 程序创建 MSI Windows 安装程序?

javascript - 使用 TDD 原则在 JavaScript 中开发 UI

c# - 将 TDD 与 OpenXml-SDK 结合使用

java - 如何通过卡上的按钮切换卡?

java - 尝试从小程序切换到 JFrame