首页 > 开发 > PHP > 正文

PHPUnit袖珍指南之命令行测试工具

2024-05-04 23:03:58
字体:
来源:转载
供稿:网友

  phpunit命令行测试工具是通过phpunit命令调用的。如下代码显示如何通过phpunit命令行测试工具运行测试。

phpunit arraytest
phpunit 2.3.0 by sebastian bergmann.

time: 0.067288

ok (2 tests)

  对每个测试,phpunit命令行测试工具打印一个字符表示进程:

  ·测试成功打印“.”。

  ·运行测试方法是发生了断言失败打印“f”。

  ·运行测试方法是发生了错误打印“e”。

  ·测试没有完成或测试没有实现打印“i”(见本书后“未完成的测试”一章)。

  phpunit可以区分失败和错误。一个失败是phpunit的断言违例,错误是一个意料外的异常或一个php错误。有时候这种差别是有用的,因为错误相比失败更容易修正。如果你有一大串问题列表,最好先解决所有错误,然后看看有没有失败遗留下来。

  让我们看看如下一些代码命令行测试工具的选项:

phpunit --help
phpunit 2.3.0 by sebastian bergmann.

usage: phpunit [switches] unittest [unittest.php]
--coverage-data <file> write code-coverage data in raw format to file.
--coverage-html <file> write code-coverage data in html format to file.
--coverage-text <file> write code-coverage data in text format to file.
--testdox-html <file> write agile documentation in html format to file.
--testdox-text <file> write agile documentation in text format to file.
--log-xml <file> log test progress in xml format to file.
--loader <loader> testsuiteloader implementation to use.
--skeleton generate skeleton unittest class for unit in unit.php.
--wait waits for a keystroke after each test.
--help prints this usage information.
--version prints the version and exits.

  phpunit unittest

  运行类unittest提供的测试,该类应该定义在源文件unittest.php中。

  类unittest必须继承phpunit2_framework_testcase类,或是提供了公有静态方法suite,并返回phpunit2_ framework_test对象的类(例如,类phpunit2_framework_testsuite的一个实例)

phpunit unittest unittest.php

  运行类unittest提供的测试,该类要定义在命令指定的源文件(unittest.php)中。

--coverage-data, --coverage-html, and --coverage-text

  控制运行测试的代码覆盖信息的分析和集合(参见本书后代码覆盖分析一节)

--testdox-html and --testdox-text

  以html或普通文本格式生成运行测试的敏捷文档(参见本书后的“测试的其他用途”一章)

--log-xml

  生成运行测试的xml格式的日志文件。

  下一个例子显示为arraytest中的测试生成的xml日志文件。

<?xml version="1.0" encoding="utf-8"?>
<testsuites>
 <testsuite name="arraytest" tests="2" failures="0" errors="0" time="0.020026">
 <testcase name="testnewarrayisempty" class="arraytest" time="0.014449"/>
 <testcase name="testarraycontainsanelement" class="arraytest" time="0.005577"/>
</testsuite>
</testsuites>

  下面的xml日志文件是为名为failureerrortest的测试类两个测试生成的,一个是testfailure,一个是testerror。这显示了失败和错误是如何分别表示的。

<?xml version="1.0" encoding="utf-8"?>
<testsuites>
 <testsuite name="failureerrortest" tests="2" failures="1" errors="1" time="0.013603">
 <testcase name="testfailure" class="failureerrortest" time="0.011872">
 <failure message="" type="phpunit2_framework_assertionfailederror"></failure>
</testcase>
<testcase name="testerror" class="failureerrortest" time="0.001731">
 <error message="" type="exception"></error>
</testcase>
</testsuite>
</testsuites>
--loader

  指定将要使用的测试套件加载器。

  标准测试套件加载器会在当前工作目录和php的include_path configuration指令定义的路径中寻找源文件。按照pear的命名规则,形如project_package_class的类名会映射到的源文件为project/package/class.php。

  --skeleton

  为类unit(在文件unit.php中)生成一个名为unittest(在文件unittest.php中)的测试用例类的框架。对原始类的每个方法,在生成的测试用例类中提供了一个未完成的测试用例(见本书后的“未完成测试”部分)。

  下面的例子显示了如何为一个名为sample的类生成一个测试类的框架。

phpunit --skeleton sample
phpunit 2.3.0 by sebastian bergmann.
wrote test class skeleton for sample to
sampletest.php.
phpunit sampletest
phpunit 2.3.0 by sebastian bergmann.
i
time: 0.007268
there was 1 incomplete test case:
1) testsamplemethod(sampletest)
ok, but incomplete test cases!!!
tests run: 1, incomplete test cases: 1.

  当你为现有代码书写测试时,你不得不重复很多相同的代码片断,如:

public function testsamplemethod( ) {}

  phpunit能帮助你分析现有代码,生成测试用例类的框架。

--wait

  每个测试结束时,等待一次击键。这很有用,特别是你在一个只有测试一直运行在打开的窗口中运行测试时。

  提示 当被测试代码中有php语法错误时,文本界面的测试会直接退出,不输出任何错误信息。标准的测试套件加载器会检查测试套件的源文件的php语法错误,但是,它不会检查测试套件包含的源文件的语法错误。phpunit的未来版本会用在砂箱中php解释器类解决这个问题。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表