自动生成Java的单元测试?

b.r*_*oth 53 java unit-testing

任何自动生成Java代码单元测试的工具?

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


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

自动生成.NET和Java的单元测试用例

eis*_*eis 47

商业工具:

  • AgitarOne似乎是该领域最大的玩家.还有一个名为JUnit Factory的30天试用和免费网络界面.例如,这里有一个关于工具用法的独立评论.AgitarOne的测试生成主要集中在回归测试上.
  • Jtest是另一个重要的球员,自1998年以来一直存在.存在免费试用.无论AgitarOne和Jtest的已授予 多次,并且它们都是基于Eclipse的IDE:秒.
  • SilverMark Test Mentor,Java Edition是一种商业产品,显然也可以基于java代码创建测试.这个产品我没有经验.

免费工具:

  • CodePlex AnalytiX曾经是一个商业工具(它是2001年第一个Eclipse的商业插件),但自谷歌收购开发它的公司以来,该产品已经免费发布.它是一个基于Eclipse的完整IDE,并且是2007年测试生成的Jolt Award的最终入围者.这些功能很不错,但该工具很长时间没有更新,所以不幸的是它不适用于当前版本的eclipse,并且似乎有代码要求java> = 1.5的问题.
  • EvoSuiteSBST(基于搜索的软件测试)'13单元测试生成竞赛以及SBST '17单元测试生成竞赛的赢家.存在Eclipse插件,Web界面和该工具的命令行版本.记录了一个回归标准,但显然它还没有工作 - 测试产生了分支覆盖,弱变异覆盖或强突变覆盖的目标.
  • Randoop使用反馈导向的随机测试生成方法.该工具自2007年以来一直存在,并一直在不断发展.Randoop可以生成回归测试和错误发现测试.它是一个强大而可靠的命令行工具,也存在Eclipse插件.
  • Palus声称使用动态和静态分析,并且正在Randoop之上构建.其作者声称它已在Google内部使用.我使用这个软件的经验是,至少目前的版本(0.2)似乎有一些内部问题,而且它似乎没有很好地扩展.
  • Daikon,Eclat,Javalanche,Java PathFinder,JCrasher,jWalk,Korat,RecGenReCrash也是免费提供的工具.

请注意,Jtest和AgitarOne生成的测试都依赖于获得许可的运行程序,如果您没有集成插件,则无法运行它们.我测试的免费工具不是这种情况,它会生成独立的测试.

免责声明:我不参与任何这些工具,但我已就此主题进行过学术研究.


Pau*_*and 17

在购买选项之前,所有这三种产品都有一个尝试,因此您可以使用它们将生成的代码与应用程序的一小部分进行比较.


Kar*_*ell 7

NetBeans 从 Java 源文件中自动执行此操作(我猜其他 IDE 也是如此)。

也许您可以查看 junit 插件(链接目前已关闭 :-()?

  • 否决票可能是由于 NetBeans 生成单元测试存根,而不是作为已接受答案中引用的工具的整个单元测试。 (15认同)

jam*_*iss 6

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

  1. 打开您要测试的课程。
  2. 选择Create/Update TestsTools菜单。
  3. 选择所需的任何功能。
  4. 打开创建的单元测试,然后完成测试的其余部分。


Dro*_*per 5

我认为 Agitar 有一个类似的工具,称为AgitarOne。我认为你仍然可以得到它,但要确保该公司仍然存在。