Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对JFrame进行TDD?_Java_Tdd_Jframe - Fatal编程技术网

Java 如何对JFrame进行TDD?

Java 如何对JFrame进行TDD?,java,tdd,jframe,Java,Tdd,Jframe,我正在做一个新项目,我想在屏幕上显示一些数据。我开始使用TDD,这对我来说是新的,但我喜欢这个想法,到目前为止还过得很好 我设置了一个JFrame,添加了一个Textarea并将文本放在那里,但是我如何才能正确地测试它呢?还是TDD环境中的这种错误想法对我有利?我想确保(以TDD方式)数据显示正确!得到显示的文本的创建被测试正确覆盖,但是显示没有 下面是一个完全简化的示例: public class MyTextDisplay { public static void main(Stri

我正在做一个新项目,我想在屏幕上显示一些数据。我开始使用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上进行连续测试,因为您没有接触到该代码。

您确定要将边界测试(“单元”测试UI)包括到TDD生命周期中吗?我是TDD的大力支持者,但不包括边界测试,只包括服务层和业务层的其他部分+1.谢谢你的努力。所以测试显示和其他东西应该被视为一个完全不同的话题?如前所述,我对TDD非常陌生…我建议它是一个不同的主题-GUI测试本身就是一个庞然大物。首先让程序工作,即逻辑,然后再考虑GUI。这有点像分离关注点,因为它允许您专注于手头的任务。我将尽可能地分离GUI,并暂时将其从TDD周期中删除!这是最好的选择。您的GUI不应包含可能干扰应用程序工作方式的逻辑。