2016-02-12 48 views
2

phpunit.xml可以定義envirionment變量:如何使用phpunit爲某些測試套件注入一個env變量?

<php> 
    <env name="ENVIRONMENT" value="test"/> 
    <env name="FOO" value="BAR"/> 
</php> 

現在,我想有多個測試包,而不只是一個。我喜歡有不同的值FOO每個,所以我想我能做到這一點:

<testsuites> 
    <testsuite name="First"> 
     <directory>unit</directory> 
     <directory>Functional</directory> 
     <php> 
      <env name="FOO" value="NARF"/> 
     </php> 
    </testsuite> 
    <testsuite name="Second"> 
     <directory>unit</directory> 
     <directory>Functional</directory> 
     <php> 
      <env name="FOO" value="NARF"/> 
     </php> 
    </testsuite> 
</testsuites> 

It doesn't seem possible to nest php inside testsuite block。所以我目前正在爲特定的測試套件注入一個特定的變量。

我看到的唯一的其他明確選項是爲每個案例定義多個phpunit.xml文件,但這會導致我想避免的很多代碼重複。

是否有另一種方法將env變量注入到phpunit測試套件中?

回答

2

phpunit.xml中定義的環境變量是默認值。您也可以從外殼通過他們:

FOO=bar phpunit 

這不會幫助你多少,因爲你需要單獨運行測試套件,通過ENV變量每次運行。

我認爲一個好的選擇是對每個測試套件(FOO_FIRST,FOO_SECOND等)以不同的方式調用這些變量。