English:
Hi, one of most important steps in a development of an extension is the test period. When you are developing a Magento extension you need to test some isolated situations or piece of code, and in the end of the development you need to test some common situations when the customer use your extension. For all of these situations you can use the PHPUnit framework.

PHPUnit offer a lot of functions and test cases that allows you to create a lot of test situations for your custom extension. Let’s see how PHPUnit works with a Magento extension.

Firs step you need to install the PHPUnit Framework, see this link for more instructions.

In my case my extension is called “Consultoras” and “Igorludgero” is the company name. So inside the extension root structure you have to create a folder called “tests”.

Inside the tests folder you have to create a same hierarchy folder structure of your extension, in my case Igorludgero > Consultoras. In the tests>Igorludgero>Consultoras folder create a bootstrap.php and phpunit.xml files.

Put these codes in the bootstrap.php file:

require_once './../../../../../../../' . DIRECTORY_SEPARATOR . 'Mage.php';
Mage::app();

Put these codes in the phpunit.xml file:

<phpunit backupGlobals="false"
  backupStaticAttributes="false"
  bootstrap="bootstrap.php"
  colors="true"
  convertErrorsToExceptions="true"
  convertNoticesToExceptions="true"
  convertWarningsToExceptions="true"
  processIsolation="false"
  stopOnFailure="true"
  syntaxCheck="false">
    <testsuites>
        <testsuite name="Igorludero_Consultoras">
            <directory>./</directory>
        </testsuite>
    </testsuites>
</phpunit>

In testsuite node put your companyname_extensionsname in the name attribute.

OK, now our PHPUnit structure it’s done in our extension, so let’s create a test case for our extension.

For example, I will create a Magento Helper to test some test cases, in tests>Igorludgero>Consultoras create a Helper folder and inside it create the DataTest.php file. This is the code of DataTest.php file:

class Igorludgero_Consultoras_Helper_DataTest extends PHPUnit_Framework_TestCase
{
    public function testCountries(){
        $helper = Mage::helper('consultoras');
        $countries = $helper->getConsultantCountries();
        $this->assertNotNull($countries);
    }
}

Necessarily the class needs to extend the PHPUnit_Framework_TestCase class. I created a testCountries function, this is my teste case where I get a collection of countries from my extension’s helper and I’m using the assertNotNull function to check if this collection is not null.

You can see all the available PHPUnit assertions in this link.

To test this test case you have to copy our extension to your Magento installation, access the tests/CompanyName/ExtensionsName in bash and execute the command “phpunit Helper_DataTest”.

The test case will be run and the result printed.

I hope this post can help you to start a use PHPUnit in your Magento extensions. Regards.

Português:

Olá, uma das mais importantes etapas durante o desenvolvimento de uma extensão é o período de testes. Quando você está desenvolvendo uma extensão para Magento você precisa criar testes isolados de algumas situações ou partes de código, e quando está no estágio final do desenvolvimento você precisa testar algumas situações comuns que serão semelhantes quando o cliente utilizar sua extensão. Para todas essas situações você pode utilizar o PHPUnit framework.

O PHPUnit oferece muitas funções e testes que permitem você a criar muitas situações de teste para suas extensões. Vamos então ver como podemos trabalhar com o PHPUnit dentro do Magento.

O primeiro passo é instalar o PHPUnit, veja este link para mais instruções de instalação.

No meu caso a extensão se chama “Consultoras” e “Igorludgero” é o nome da compania. Dentro do diretório da extensão crie uma pasta com o nome de “tests”.

Dentro dessa pasta você deve criar a mesma hierarquia de pastas de sua extensão, no meu caso Igorludgero > Consultoras. Dentro da pasta tests>Igorludgero>Consultoras crie os arquivos bootstrap.php e phpunit.xml

Coloque estes códigos no arquivo bootstrap.php:

require_once './../../../../../../../' . DIRECTORY_SEPARATOR . 'Mage.php';
Mage::app();

E estes no phpunit.xml:

<phpunit backupGlobals="false"
  backupStaticAttributes="false"
  bootstrap="bootstrap.php"
  colors="true"
  convertErrorsToExceptions="true"
  convertNoticesToExceptions="true"
  convertWarningsToExceptions="true"
  processIsolation="false"
  stopOnFailure="true"
  syntaxCheck="false">
    <testsuites>
        <testsuite name="Igorludero_Consultoras">
            <directory>./</directory>
        </testsuite>
    </testsuites>
</phpunit>

No node testsuite coloque suacompanianome_nomedaextensao no attribute name.

OK, agora nossa estrutura do PHPUnit dentro da nossa extensão está criada, então vamos criar um caso de teste para nossa extensão.

Por exemplo, eu vou criar um Helper do Magento para testar algumas situações, na pasta  tests>Igorludgero>Consultoras crie a pasta Helper e dentro dela o arquivo DataTest.php file. Este é o código dele:

class Igorludgero_Consultoras_Helper_DataTest extends PHPUnit_Framework_TestCase
{
public function testCountries(){
$helper = Mage::helper(‘consultoras’);
$countries = $helper->getConsultantCountries();
$this->assertNotNull($countries);
}
}

Obrigatoriamente a classe precisa extender a class do PHPUnit PHPUnit_Framework_TestCase. Veja que eu criei dentro da classe a função testCountries, esta função é um caso de teste onde eu obtenho uma coleção de países dentro do helper da minha extensão e eu estou usando a função assertNotNull para que seja validado se esta coleção não é nula.

Você pode visualizar todas as asserções disponíveis no PHPUnit acessando este link.

Para rodar este teste você precisa copiar a extensão para sua instalação do Magento, acessar a pasta tests/CompanyName/ExtensionsName no bash de sua instalação do Magento e executar o comando “phpunit Helper_DataTest”.

O caso de teste será executado e o resultado exibido na tela.

Espero que este post ajude-o a iniciar a utilizar o PHPUnit no desenvolvimento e manutenção de suas extensões para Magento. Abraços!

Magento 1 – Unit Tests with PHPUnit

Igor Ludgero


PHP & Magento Developer from Brazil.


Post navigation


Leave a Reply

Your email address will not be published. Required fields are marked *

Pin It on Pinterest