从数据文件动态创建PHPUnit测试

前端之家收集整理的这篇文章主要介绍了从数据文件动态创建PHPUnit测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含输入和预期输出的数据文件.一个例子可能是:
input:   output:
2        3
3        5
4        Exception
5        8
...      ...

目前,我有一个自定义解决方案,可以从数据文件中读取并对每个{input,output}对执行测试.我想将其转换为基于PHPUnit的解决方案,我希望每个输入使用测试名称forXassertY进行一次测试.所以前三个测试将被称为for2assert3(),for3assert5()和for4assertException().

如果可以动态创建测试方法并将数据文件作为这些测试的基础,我不想将现有数据转换为测试.我想将它转换为PHPUnit,因为我想稍后添加一些其他测试,并使用Hudson处理和查看输出.

建议?

您可以使用PHPUnit的 data providers
<?PHP

require_once 'PHPUnit/Framework/TestCase.PHP';

class ProviderTest extends PHPUnit_Framework_TestCase
{
    public function testCaseProvider()
    {
        // parse your data file however you want
        $data = array();
        foreach (file('test_data.txt') as $line) {
            $data[] = explode("\t",trim($line));
        }

        return $data;
    }

    /**
     * @dataProvider testCaseProvider
     */
    public function testAddition($num1,$num2,$expectedResult)
    {
        $this->assertEquals($expectedResult,$num1 + $num2);
    }
}

?>

并且您的test_data.txt文件如下所示:

1   2   3
2   2   4
3   5   7

然后运行测试:

$PHPunit ProviderTest.PHP
PHPUnit 3.4.12 by Sebastian Bergmann.

...F

Time: 0 seconds,Memory: 5.75Mb

There was 1 failure:

1) ProviderTest::testAddition with data set #2 ('3','5','7')
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-7
+8

/Users/dana/ProviderTest.PHP:23

FAILURES!
Tests: 4,Assertions: 3,Failures: 1.
原文链接:https://www.f2er.com/php/134788.html

猜你在找的PHP相关文章