Как я использую PHPUnit с Платформой Зенда?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

41
задан texai 11 March 2011 в 20:55
поделиться

5 ответов

Я использую Zend_Test для завершенного тестирования всех контроллеров. Довольно просто настроить, поскольку только необходимо настроить файл начальной загрузки (сам файл начальной загрузки не должен диспетчеризировать фронтальный контроллер!). Мой основной класс тестового сценария похож на это:

abstract class Controller_TestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    protected function setUp()
    {
        $this->bootstrap=array($this, 'appBootstrap');
        Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_NonPersistent());
        parent::setUp();
    }

    protected function tearDown()
    {
        Zend_Auth::getInstance()->clearIdentity();
    }

    protected function appBootstrap()
    {
        Application::setup();
    }
}

, где Application::setup(); делает всю установку задачи, которые также настраивают реальное приложение. Простой тест тогда был бы похож на это:

class Controller_IndexControllerTest extends Controller_TestCase
{
    public function testShowist()
    {
        $this->dispatch('/');
        $this->assertController('index');
        $this->assertAction('list');
        $this->assertQueryContentContains('ul li a', 'Test String');
    }
}

Это - все...

14
ответ дан Stefan Gehrig 27 November 2019 в 00:57
поделиться

Они имеют" Введение в Искусство Поблочного тестирования " на Зоне Разработчика Зенда, которая покрывает PHPUnit.

7
ответ дан HorusKol 27 November 2019 в 00:57
поделиться

Я нашел этот статья очень полезный. Также документация Zend_Test помогла много. С помощью этих двух ресурсов мне удалось успешно реализовать поблочное тестирование в учебное руководство QuickStart Платформы Зенда и записать немного тестов для него.

2
ответ дан Josef Sábl 27 November 2019 в 00:57
поделиться

Я не использовал Zend_Test, но я записал тесты против приложений с помощью Zend_MVC и т.п.. Самая большая часть получает достаточно Вашего кода начальной загрузки в Вашей тестовой установке.

0
ответ дан Sam Corder 27 November 2019 в 00:57
поделиться

Используя ZF 1.10, я помещаю некоторый код начальной загрузки в tests / bootstrap.php (в основном то, что находится в (public / index.php), до $ application-> bootstrap ().

Затем я я могу запустить тест, используя

phpunit --bootstrap ../bootstrap.php  PersonControllerTest.php 
1
ответ дан 27 November 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: