首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >番石榴单元测试是如何自动生成的?

番石榴单元测试是如何自动生成的?
EN

Software Engineering用户
提问于 2012-11-01 09:38:59
回答 2查看 3.1K关注 0票数 32

番石榴有单元测试用例自动生成

番石榴有惊人数量的单元测试:截至2012年7月,番石榴测试包包含了286,000多个测试用例。大多数测试都是自动生成的,不是手工编写的,但是番石榴的测试覆盖非常彻底,特别是对于com.google.common.collect。

它们是如何产生的?使用了哪些技术和技术来设计和生成它们?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2014-11-04 10:45:48

大部分测试是针对番石榴集合实现的。他们编写了通用测试,对集合接口进行了详尽的测试,这将为每个实现生成一个套件。例如,请参见名为CollectionAddAllTesterListIndexOfTester的类。

所有这些都由一个名为testlib的库支持,该库作为番石榴的一部分提供。这是很普通的。它支持为任何接口(不仅仅是集合)编写通用测试。您可以指定可能实现的Features,并测试这些实现(例如,如果您的集合不可修改,您希望得到与set.add()不同的结果),并且在运行测试时指定您的实现支持哪些特性。

它基于JUnit 3,而不是4。通常,有一个类扩展TestCase中的名为testSomething()的方法,而JUnit则以反射方式运行它们。testlib库连接到这些测试的运行中,因此生命周期如下所示:

  • 对于每个您想要测试的实现
  • 适用于每一种(适用)测试方法
  • 创建TestCase实例
  • 初始化TestSubjectGenerator -这是您在实际创建测试主题的地方扩展的testlib接口
  • 反射运行测试方法。在此方法中,getSubjectGenerator()允许访问被试。

关键是额外的初始化步骤,允许他们将特定的测试主题注入到通用测试用例中。

我是关于如何为您自己的接口编写testlib生成套件的写一篇文章

(还在sqa网站上发布了相同的问题。)

票数 8
EN

Software Engineering用户

发布于 2012-11-01 13:04:45

有单元测试发电机。例如,在.NET世界中,像Microsoft这样的东西可以做到这一点。

例如,Microsoft基于代码分析尝试将所有可能的值作为方法的参数。一些参数将允许该方法抛出异常。这样的事情可以自动创建测试。静态值(如在某些情况下返回的空字符串)也可以自动测试。

票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/173167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档