1

我已经在一个新的 Silverstripe 项目中添加了一些测试,它们驻留在其中app/tests/app这是我重命名的mysite,在它的变量_config.php中也有这个)。$project

我有两个文件:

APHPUnitTest.php

class APHPUnitTest extends SapphireTest {

    static $fixture_file = 'APHPUnitTest.yml';

    public function testURLGeneration() {

        $expectedURLs = array(
            'home' => 'home',
            'about' => 'about-us'
        );

        foreach($expectedURLs as $fixture => $urlSegment) {
            $obj = $this->objFromFixture('Page', $fixture);
            $this->assertEquals($urlSegment, $obj->URLSegment);
        }
    }
}

APHPUnitTest.yml

Page:
    home:
        Title: Home
    about:
        Title: About Us

测试出现在 上/dev/tests,但是当我运行它时,我只看到标题:

APHPUnitTest
dev → tests → APHPUnitTest

没有结果...我可以添加die;到我的测试中.php,这些会阻止页面加载,所以文件执行得很好,我不确定为什么这不起作用。

当我尝试从命令行运行测试时,出现错误class SapphireTest not found。从命令行运行的非银条 PHPUnit 测试工作正常。

4

1 回答 1

1

我已经解决了我的问题,但是有两件事导致它,所以我想我会把它们都放在这里,希望它可以帮助其他人。

我在这里遇到的主要问题与数据库权限有关。我正在运行测试的数据库用户仅对所讨论的 Silverstripe 站点具有权限。测试要求用户能够为每个测试创建单独的数据库。授予足够的权限解决了我的问题。

需要更改的另一件事是 my ,它在需要更改为时phpunit.xml仍然读取。mysite/testsapp/tests

于 2013-09-06T17:23:27.293 回答