Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 GUI组件的单元测试是否应该比测试中的代码包含更多的行?_Java_Unit Testing_User Interface_Mocking - Fatal编程技术网

Java GUI组件的单元测试是否应该比测试中的代码包含更多的行?

Java GUI组件的单元测试是否应该比测试中的代码包含更多的行?,java,unit-testing,user-interface,mocking,Java,Unit Testing,User Interface,Mocking,这是一个健全的检查,因为我发现这在我们的代码中是正确的。与我们的功能代码不同,有状态GUI的测试由于状态设置、组合案例分析和模仿/伪造邻居/合作者/监听器等因素而具有不幸的权重。我遗漏了什么吗?谢谢你的反馈 注: 测试在JVM中运行,一切都是POJO 到目前为止,我们通过增加单元大小得到了一些简化:测试更多粘在一起的部件 新注: 我们正在使用jUnit和Mockito 避免代码重复。应提取通用设置代码和操作 寻找层次结构。不要编写一个庞大的测试场景。将公共行分组,并将它们提取到一个有意义

这是一个健全的检查,因为我发现这在我们的代码中是正确的。与我们的功能代码不同,有状态GUI的测试由于状态设置、组合案例分析和模仿/伪造邻居/合作者/监听器等因素而具有不幸的权重。我遗漏了什么吗?谢谢你的反馈

注:

  • 测试在JVM中运行,一切都是POJO
  • 到目前为止,我们通过增加单元大小得到了一些简化:测试更多粘在一起的部件
新注:

  • 我们正在使用jUnit和Mockito
  • 避免代码重复。应提取通用设置代码和操作
  • 寻找层次结构。不要编写一个庞大的测试场景。将公共行分组,并将它们提取到一个有意义的命名方法中。继续构建多层测试场景
  • 考虑更好的工具,Scala或Groovy作为测试DSL(即使您不在生产代码中使用它们)
  • 此外,代码的生产行数和测试行数之间的关系是不相关的。我可以很容易地找到一个非常短的代码段的例子,它有如此多的边缘情况,需要几十个测试

    和a(我的重点):

    […]库由大约81.3 KSLOC的C代码组成。[…]相比之下,该项目的测试代码和测试脚本的数量是91421.1 KSLOC的1124倍


    没错,每行生产代码大约有1100行测试代码。

    您可能想包括您正在使用的测试api/套件。我认为,一般来说,除非测试的代码非常简单紧凑,否则单元测试往往比它们测试的代码大得多。问题是:GUI的每个小部件单元测试是否有任何价值?我个人不这么认为,但其他人可能不同意。