Lime (test framework)
{{Short description|Unit testing and functional testing framework}}
{{lowercase title}}
{{Infobox software
| name = lime
| logo =
| screenshot =
| caption =
| author = Fabien Potencier
| developer = Bernhard Schussek
| released = {{Start date and age|2007|01|29}}
| discontinued = yes
| latest_release_date = {{Start date and age|2010|05|19}}
| latest preview version = 2.0.0alpha1
| latest preview date = {{Start date and age|2009|11|09}}
| operating_system = Cross-platform
| programming_language = PHP
| genre = Test tool
| license = MIT License
| website = {{url|http://www.symfony-project.org/}}
}}
lime is a unit testing and functional testing framework built specifically for the Symfony web application framework based on the Test::More Perl library.Potencier, Fabien; Zaninotto, François. The Definitive Guide to symfony, Apress, January 26, 2007, pp. 317-344. {{ISBN|1-59059-786-9}} The framework is designed to have readable output from tests, including color formatting, by following the Test Anything Protocol which also allows for easy integration with other tools. lime tests are run in a sandbox environment to minimize test executions from influencing each other. Though the lime testing framework is built for testing within Symfony, lime is contained within a single PHP file and has no dependency on Symfony or any other library.
The alpha version of lime 2.0 was announced on November 10, 2009{{cite web | url=http://symfony.com/blog/lime-2-alpha-released | title=Lime 2 alpha released (Symfony Blog) }} and is compatible with Symfony 1.2 and lower.{{Cite web | url=http://blog.naenius.com/2009/08/using-symfonys-lime-in-phpundercontrol/ | archive-url=https://web.archive.org/web/20180205042332/http://blog.naenius.com/2009/08/using-symfonys-lime-in-phpundercontrol/ | archive-date=2018-02-05 | title=Using Symfony's Lime in phpUnderControl}} Symfony 2.0 uses PHPUnit for testing instead of lime.{{Cite web | url=http://symfonyexperts.com/question/show/id/12 | title=Can someone post a full working example of Lime 2 annotations? | archive-url=https://web.archive.org/web/20130406033356/http://symfonyexperts.com/question/show/id/12 | archive-date=2013-04-06}}
Example
lime unit tests use the lime_test
object to make assertions. The following is a basic example lime unit test to test PHP's built-in in_array
function.
include dirname(__FILE__) . '/bootstrap/unit.php'; // Include lime.
// Create the lime_test object for 10 number of assertions and color output.
$t = new lime_test(10, new lime_output_color());
// The test array.
$arr = ['Hello', 'World', 123];
// Output a comment.
$t->diag('in_array()');
// Test to make sure in_array returns a boolean value for both values
// that are in the array and not in the array.
$t->isa_ok(in_array('hey', $arr), 'bool', '\'in_array\' did not return a boolean value.');
$t->isa_ok(in_array('Hello', $arr), 'bool', '\'in_array\' did not return a boolean value.');
$t->isa_ok(in_array(5, $arr), 'bool', '\'in_array\' did not return a boolean value.');
$t->isa_ok(in_array(FALSE, $arr), 'bool', '\'in_array\' did not return a boolean value.');
// Test to make sure in_array can find values that are in the array
// and doesn't find values that are not in the array.
$t->ok(!in_array('hey', $arr), '\'in_array\' found a value not in the array.');
$t->ok(!in_array(5, $arr), '\'in_array\' found a value not in the array.');
$t->ok(!in_array(FALSE, $arr), '\'in_array\' found a value not in the array.');
$t->ok(in_array('Hello', $arr), '\'in_array\' failed to find a value that was in the array.');
$t->ok(in_array('World', $arr), '\'in_array\' failed to find a value that was in the array.');
$t->ok(in_array(123, $arr), '\'in_array\' failed to find a value that was in the array.');
Version 2.0
The alpha version of lime 2.0 was announced on the Symfony blog on November 10, 2009.{{Cite news|url=http://symfony.com/blog/lime-2-alpha-released|title=(Press Release) Lime 2 alpha released|last=SensioLabs|access-date=2017-11-23|language=en}} The second version of lime was built to be as backward compatible with the first version as was possible - the two parts of lime 2.0 that are not compatible with lime 1.0 are the configuration of the test harness and the LimeCoverage
class. lime 2.0 includes support for xUnit output, source code annotations, parallel execution of tests, automatic generation of mock and stub objects, and operator overloading for data within tests. Unlike the first version of lime, lime 2.0 does have some dependencies on Symfony.
See also
{{Portal|Free and open-source software}}
References
{{Reflist}}