Como configurar variables ​​$ _SERVER ao executar testes phpunit através de Jenkins

Estou tentando escrever testes de unidade para um aplicativo onde muitas mudanças de código não são possíveis. Quase todos os arquivos .php na base de código usam algumas variables ​​$ _SERVER [”] como

require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php'; 

Então, agora, quando eu tenho que escrever e executar casos de teste PHPUnit, eu tenho que configurar de alguma forma essas variables. No momento, estou configurando essas variables ​​no ambiente do usuário e depois fazendo

 $_SERVER['DOCUMENT_ROOT'] = getenv('DOCUMENT_ROOT'); require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php'; 

Obter as variables ​​do servidor como esta está funcionando bem. $ phpunit test.php meus testes através da linha de comando como $ phpunit test.php .

Ques1: É possível configurar as variables ​​$ _SERVER enquanto executa os testes phpunit através da linha de comando?

Eu também tenho que executar esses testes de unidade através do Jenkins e não consigo configurar essas variables ​​de servidor através do arquivo ANT / build.

Ques2: É possível definir esta variável através de um arquivo de compilation de formigas no Jenkins ou executando qualquer script de shell antes de executar os testes de phpunit através do Jenkins?

Tentei exportar a variável do servidor através de um script de shell

  export DOCUMENT_ROOT=/server/path-to-root-dir 

e chamando esse script no build.xml em Jenkins

      

mas não está funcionando. Existe alguma configuração que eu possa fazer por isso? Obrigado!

Não tenho certeza sobre # 1, mas o próprio PHPUnit teria que suportá-lo. Não vejo nenhuma maneira de fazer isso através da linha de comando. No entanto, se você colocar sua solução atual no bootstrap.php , não precisa fazê-lo em cada teste.

Para # 2, permite que você defina variables ​​de ambiente usando elementos nesteds. Eu uso isso em Jenkins.

    

Atualização: normalmente você cria bootstrap.php para configurar adicionar o diretório de origem ao caminho de inclusão e inicializar o ambiente de teste, como necessário. Este arquivo não é fornecido pelo PHPUnit – ao contrário de phpunit.xml .

phpunit.xml -o no mesmo diretório que phpunit.xml , mas é porque eu tenho um arquivo separado para cada projeto. Ele vai no diretório que mantém seus testes tipicamente. Isso permite que você execute phpunit partir da linha de comando sem dizer-lhe como encontrar esses arquivos de configuração. Caso contrário, você deve usar --bootstrap e / ou --configuration para apontar para eles.

Aqui é como estruturo um projeto típico:

 / build.xml src/ MyClass.php test/ MyClassTest.php phpunit.xml bootstrap.php 
    Intereting Posts