Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组织PHPUnit测试用例_Php_Testing_Phpunit - Fatal编程技术网

组织PHPUnit测试用例

组织PHPUnit测试用例,php,testing,phpunit,Php,Testing,Phpunit,我有一组测试需要使用管理用户运行,还有一些测试需要使用非管理用户运行。此外,非管理用户通过这些测试之一在我的系统中注册。因此,我考虑将这个新注册的用户用于其他测试 在本例中,显示了按特定顺序执行测试的方式 <phpunit bootstrap="src/autoload.php"> <testsuites> <testsuite name="money"> <file>tests/Fi

我有一组测试需要使用管理用户运行,还有一些测试需要使用非管理用户运行。此外,非管理用户通过这些测试之一在我的系统中注册。因此,我考虑将这个新注册的用户用于其他测试

在本例中,显示了按特定顺序执行测试的方式

<phpunit bootstrap="src/autoload.php">
  <testsuites>
    <testsuite name="money">
      <file>tests/FirstTest.php</file>
      <file>tests/SecondTest.php</file>
      <file>tests/ThirdTest.php</file>
      <file>tests/FourthTest.php</file>
    </testsuite>
  </testsuites>
</phpunit>

tests/FirstTest.php
tests/SecondTest.php
tests/ThirdTest.php
tests/FourthTest.php
因为为每个新的测试用例维护这个列表很烦人,我想指定一个测试用例,它首先注册特定的用户,然后在一个目录中注册所有其他的测试用例

<phpunit bootstrap="src/autoload.php">
  <testsuites>
    <testsuite name="money">
      <file>tests/RegistrationTest.php</file>
      <directory>tests</directory>
    </testsuite>
  </testsuites>
</phpunit>

tests/RegistrationTest.php
测验
不幸的是,一旦在配置文件中定义了单个
,PHPUnit似乎就会忽略手动指定的订单

有没有办法解决这个问题,先从目录中运行一个特定的测试


仅供参考,我正在使用PHPUnit版本4.5.0,测试应相互独立,不应使用一个测试设置另一个测试

您需要的是一些代码,用于准备每种测试类型所需的用户,并在需要时从setUp或setUpBeforeClass方法使用它。每个测试都应该能够创建运行所需的数据


创建用户所需的代码可能是真实的代码,在某些测试用例中进行测试。没关系。测试可以使用真实代码来设置环境

我知道让一些测试用例依赖于其他测试用例是非常糟糕的做法,但是由于注册过程非常复杂,并且我正在编写的测试不是与PHP代码本身交互,而是与前端交互,为每个测试创建一个新用户,然后将其删除是没有效率的。你是说这些测试功能正常,所以你真的在浏览你的网站?我也遇到了这个问题,并使用了我在回答中提出的方法:使用一些帮助器模块,该模块接受Selenium浏览器实例或您正在使用的任何东西,并执行一些操作(登录、创建新用户等),以便在配置之后可以开始真正的测试。此外,如果出现问题,则应触发异常,以便测试将失败并出现错误,而不是失败。