7

我正在开发一个新项目,我想在屏幕上显示一些数据。我让自己使用 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");
    }
}
4

1 回答 1

5

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

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

我宁愿专注于我的设计,并确保生成文本值的任何内容都按预期工作。GUI 应该是“愚蠢的”,只关注显示或检索值,如果显示的值是否确实正确,则几乎没有任何顾虑。

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

于 2012-05-18T06:19:31.997 回答