番石榴有单元测试用例自动生成:
番石榴有惊人数量的单元测试:截至2012年7月,番石榴测试包包含了286,000多个测试用例。大多数测试都是自动生成的,不是手工编写的,但是番石榴的测试覆盖非常彻底,特别是对于com.google.common.collect。
它们是如何产生的?使用了哪些技术和技术来设计和生成它们?
发布于 2014-11-04 10:45:48
大部分测试是针对番石榴集合实现的。他们编写了通用测试,对集合接口进行了详尽的测试,这将为每个实现生成一个套件。例如,请参见名为CollectionAddAllTester、ListIndexOfTester的类。
所有这些都由一个名为testlib的库支持,该库作为番石榴的一部分提供。这是很普通的。它支持为任何接口(不仅仅是集合)编写通用测试。您可以指定可能实现的Features,并测试这些实现(例如,如果您的集合不可修改,您希望得到与set.add()不同的结果),并且在运行测试时指定您的实现支持哪些特性。
它基于JUnit 3,而不是4。通常,有一个类扩展TestCase中的名为testSomething()的方法,而JUnit则以反射方式运行它们。testlib库连接到这些测试的运行中,因此生命周期如下所示:
TestCase实例TestSubjectGenerator -这是您在实际创建测试主题的地方扩展的testlib接口getSubjectGenerator()允许访问被试。关键是额外的初始化步骤,允许他们将特定的测试主题注入到通用测试用例中。
我是关于如何为您自己的接口编写testlib生成套件的写一篇文章。
(还在sqa网站上发布了相同的问题。)
发布于 2012-11-01 13:04:45
有单元测试发电机。例如,在.NET世界中,像Microsoft这样的东西可以做到这一点。
例如,Microsoft基于代码分析尝试将所有可能的值作为方法的参数。一些参数将允许该方法抛出异常。这样的事情可以自动创建测试。静态值(如在某些情况下返回的空字符串)也可以自动测试。
https://softwareengineering.stackexchange.com/questions/173167
复制相似问题