单元测试

测试插件

可以通过在基本插件目录中运行phpunit来执行插件单元测试。

系统测试

可以通过在基本目录中创建一个名为phpunit.xml的文件来测试插件,其中包含以下内容,例如,在文件/plugins/acme/blog/phpunit.xml中:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <phpunit backupGlobals="false"
  3. backupStaticAttributes="false"
  4. bootstrap="../../../tests/bootstrap.php"
  5. colors="true"
  6. convertErrorsToExceptions="true"
  7. convertNoticesToExceptions="true"
  8. convertWarningsToExceptions="true"
  9. processIsolation="false"
  10. stopOnFailure="false"
  11. syntaxCheck="false"
  12. >
  13. <testsuites>
  14. <testsuite name="Plugin Unit Test Suite">
  15. <directory>./tests</directory>
  16. </testsuite>
  17. </testsuites>
  18. <php>
  19. <env name="APP_ENV" value="testing"/>
  20. <env name="CACHE_DRIVER" value="array"/>
  21. <env name="SESSION_DRIVER" value="array"/>
  22. </php>
  23. </phpunit>

然后可以创建 tests/ 目录以包含测试类。 文件结构应该使用具有Test后缀的类来模仿基目录。 还建议为该类使用命名空间。

  1. <?php namespace Acme\Blog\Tests\Models;
  2. use Acme\Blog\Models\Post;
  3. use PluginTestCase;
  4. class PostTest extends PluginTestCase
  5. {
  6. public function testCreateFirstPost()
  7. {
  8. $post = Post::create(['title' => 'Hi!']);
  9. $this->assertEquals(1, $post->id);
  10. }
  11. }

测试类应该扩展基类PluginTestCase,这是一个特殊的类,它将设置存储在内存中的October数据库,作为setUp方法的一部分。 它还将刷新正在测试的插件以及插件注册文件中的任何已定义的依赖项。 这相当于在每次测试之前运行以下内容:

  1. php artisan october:up
  2. php artisan plugin:refresh Acme.Blog
  3. [php artisan plugin:refresh <dependency>, ...]

注意: 如果你的插件使用配置文件,那么你需要在setUp中运行System\Classes\PluginManager::instance()->registerAll(true);`测试方法。 下面是一个基本测试用例类的示例,如果您需要测试插件使用其他插件而不是单独使用,则应使用该示例。

  1. use System\Classes\PluginManager;
  2. class BaseTestCase extends PluginTestCase
  3. {
  4. public function setUp()
  5. {
  6. parent::setUp();
  7. // 获取插件管理器
  8. $pluginManager = PluginManager::instance();
  9. // 注册插件以使文件配置等功能可用
  10. $pluginManager->registerAll(true);
  11. // 引导所有插件以使用此插件的依赖项进行测试
  12. $pluginManager->bootAll(true);
  13. }
  14. public function tearDown()
  15. {
  16. parent::tearDown();
  17. // 获取插件管理器
  18. $pluginManager = PluginManager::instance();
  19. // 确保再次注册插件以进行下一次测试
  20. $pluginManager->unregisterAll();
  21. }
  22. }

系统测试

要对October核心文件执行单元测试,您应该使用composer下载开发副本或克隆git repo。 这将确保您拥有tests/目录。

单元测试

可以通过在根目录或/tests/unit中运行phpunit来执行单元测试。

功能测试

可以通过在/ tests/functional目录中运行phpunit来执行功能测试。 确保满足以下配置:

  • 正在使用的主题是 demo
  • 语言是en

安装Selenium

  1. http://java.sun.com/下载最新的Java SE并安装
  2. 下载Selenium Server的分发档案。
  3. 解压缩分发存档,并将selenium-server-standalone-2.42.2.jar(检查版本后缀)复制到/usr/local/bin。
  4. 运行java -jar /usr/local/bin/selenium-server-standalone-2.42.2.jar启动Selenium Server服务器。

Selenium配置

在根目录中创建一个新文件selenium.php,添加以下内容:

  1. <?php
  2. // Selenium server details
  3. define('TEST_SELENIUM_HOST', '127.0.0.1');
  4. define('TEST_SELENIUM_PORT', 4444);
  5. define('TEST_SELENIUM_BROWSER', '*firefox');
  6. // Back-end URL
  7. define('TEST_SELENIUM_URL', 'http://localhost/backend/');
  8. // Active Theme
  9. define('TEST_SELENIUM_THEME', 'demo');
  10. // Back-end credentials
  11. define('TEST_SELENIUM_USER', 'admin');
  12. define('TEST_SELENIUM_PASS', 'admin');