如何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无关的对象,但可以单独测试.这允许您开发与显示(视图)分开的主要业务逻辑(模型和控制器).这是MVC模式.测试驱动开发只是意味着您在编写代码之前测试可以做的事情,并且当您添加更多代码时,将开始更多测试.

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

由于使用自动化工具(正确测试)非常难以测试GUI,我会尽可能地避免使用GUI,并尽可能地将GUI与实际应用程序分离.然后,您可以测试GUI一次,以确保它显示它应该是什么,并专注于业务逻辑,而无需在GUI上进行连续测试,因为您没有触及该代码.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...