Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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单元测试的自动生成?_Java_Unit Testing - Fatal编程技术网

Java单元测试的自动生成?

Java单元测试的自动生成?,java,unit-testing,Java,Unit Testing,有没有为Java代码自动生成单元测试的工具 更新: 主要用途是为将要重构的遗留代码快速生成单元测试。自动生成后,无需自动保持测试与代码同步 这里提出了几乎相同的问题,但答案是针对.NET而不是Java(这是公认的答案): 我认为Agitar有一个这样的工具叫做。我想你仍然可以得到它,但要确保公司还在那里。 有一个JUnit测试生成模块,听起来它可以做你想做的事情。看 [CoView]是一款价格合理的产品,每位用户每年仅需9.99美元,不幸的是它已经不存在了 这是值得调查的 这三种产品都有“先

有没有为Java代码自动生成单元测试的工具

更新: 主要用途是为将要重构的遗留代码快速生成单元测试。自动生成后,无需自动保持测试与代码同步


这里提出了几乎相同的问题,但答案是针对.NET而不是Java(这是公认的答案):


我认为Agitar有一个这样的工具叫做。我想你仍然可以得到它,但要确保公司还在那里。

  • 有一个JUnit测试生成模块,听起来它可以做你想做的事情。看
  • [CoView]是一款价格合理的产品,每位用户每年仅需9.99美元,不幸的是它已经不存在了
  • 这是值得调查的

这三种产品都有“先试用后购买”选项,因此您可以使用它们将生成的代码与应用程序的一小部分进行比较。

NetBeans会自动从Java源文件(我猜其他IDE也会这样做)

也许你可以看看junit插件(链接当前已关闭:-()?

商业工具:

  • 似乎是该领域最大的参与者。还有一个名为的免费web界面。例如,中有一个独立的工具使用审查。AgitarOne的测试生成主要关注回归测试
  • 是另一个大玩家,从1998年就开始了。存在免费试用。AgitarOne和Jtest都是,它们都是基于Eclipse的IDE:s
  • 是一个商业产品,显然也可以创建基于java代码的测试。这个产品我没有使用过
免费工具:

  • 曾经是一个商业工具(它是Eclipse在2001年的第一个商业插件),但自从谷歌收购开发它的公司以来,该产品一直是免费发布的。它是一个基于Eclipse的完整IDE,是2007年测试生成中Jolt奖的入围者。功能不错,但该工具已经很久没有更新了,所以不幸的是,它不能与当前版本的Eclipse一起使用,并且似乎在使用方面存在问题需要java>=1.5的h代码
  • 也是。该工具有一个Eclipse插件、web界面和命令行版本。有一个回归标准记录在案,但显然还不起作用-测试生成了分支覆盖率、弱突变覆盖率或强突变覆盖率的目标
  • 使用反馈导向的随机测试生成方法。该工具自2007年开始使用,并一直在持续开发中。Randoop可以生成回归测试和错误查找测试。它是一个健壮可靠的命令行工具,Eclipse插件也存在
  • 声称同时使用动态和静态分析,并建立在Randoop之上。其作者声称它已经在谷歌内部使用。我对该软件的经验是,至少当前版本(0.2)似乎存在一些内部问题,而且它的扩展性似乎不好
  • 、、和也是可用的免费工具
请注意,Jtest和AgitarOne生成的测试都依赖于获得许可的跑步者,如果您没有集成他们的插件,它们将无法运行。我测试过的免费工具不是这种情况,它们生成独立的测试


免责声明:我不属于这些工具中的任何一个,但我已经就这一主题进行了学术研究。

Netbeans 8具有内置功能,可以构建比存根更多的单元测试。要使用此功能:

  • 打开要测试的类
  • Tools
    菜单中选择
    Create/updatetests
  • 选择您想要的任何功能
  • 打开创建的单元测试并完成测试的其余部分

  • 使用Randoop怎么样。这对Java和.NET都有效。你能告诉我们并解释一下为什么要生成它们吗?你想这只是一次尝试,以后保持同步吗?KLE,刚刚更新了问题来回答你的问题。另外,检查一下,为什么会有反对票?接受的答案甚至是相似的,而且不是开源的。。。投票失败的原因可能是NetBeans生成单元测试存根,而不是接受答案中引用的工具的整个单元测试。NetBeans 8实际上生成了完整的单元测试。CodePlex不再可访问。Palus、Eclat、JCrasher和Korat确实依赖于不再可用的库。也许这是对您的l我发现diffblue社区版作为一个免费工具,在2021年可能是一个很好的补充。