我正在开发一个新项目,我希望在屏幕上显示一些数据.我将自己设定为使用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上进行连续测试,因为您没有触及该代码.