Jenkins与Zend框架2和多个模块

时间:2014-03-22 11:11:32

标签: xml unit-testing jenkins zend-framework2 phpunit

我找不到解决方案,有不同的方法可以做到这一点,但我只是想知道我是否可以这样做:

Project
| - config
| - data
| - module
| | - Application
| | | - config
| | | - src
| | | - test <---------------------unit test for each module
| | | | - ApplicationTest
| | | | - Bootstrap.php
| | | | - phpunit.xml
| | | | - TestConfig.php.dist 
| | | - view
| | | - Module.php
| | - Album
| | | - config
| | | - src
| | | - test
| | | | - AlbumTest
| | | | - Bootstrap.php
| | | | - phpunit.xml
| | | | - TestConfig.php.dist 
| | | - view
| | | - Module.php
| - public
| - vendor
| - tests <------------------centralize launch of all tests for reporting on Jenkins
| build.xml <----------------This file launch phpunit.xml in ./tests/phpunit.xml

在root的测试目录中,我想放置一个xml用于启动每个模块的每个单元测试,并为Jenkins创建一个报告文件。 我看了很多教程,包括:

centralize phpunit test

堆栈溢出中的

或问题,但不是我想要的东西:

zf2 + phpunit + multiple module + CI

在堆栈上,有这个问题,但我尝试了,但它无法正常工作:

Zend Framework 2 Unit Tests on Jenkins not working

感谢您的帮助

编辑[2014年3月24日 - 12:25]:我终于找到了一种方法,它将Bootstrap.php,TestConfig.php放在测试目录中。

Project
| - config
| - data
| - module
| | - moduleName1
| | | - config
| | | - src
| | | - test <---------------------unit test for each module
| | | | - ApplicationTest
| | | - view
| | | - Module.php
| | - moduleName2
| | | - config
| | | - src
| | | - test
| | | | - moduleName2Test
| | | - view
| | | - Module.php
| - public
| - vendor
| - tests
| | -phpunit.xml <-------- Jenkins fail here
| | -Bootstrap.php
| | -TestConfig.php
| build.xml <----------------This file launch phpunit.xml in ./tests/phpunit.xml

我的phpunit.xml代码如下:

<phpunit bootstrap="Bootstrap.php" colors="true"
    stopOnError="true"
    stopOnFailure="false"
    strict="true"
    verbose="true">
<testsuites>
    <testsuite name="All">
        <directory>../module/moduleName1/test/moduleName1Test</directory>
        <directory>../module/moduleName2/test/moduleName2Test</directory>
    </testsuite>
</testsuites>
<logging>
  <log type="coverage-html" target="../build/coverage/" charset="UTF-8"
       yui="true" highlight="false"
       lowUpperBound="35" highLowerBound="70"/>
  <log type="coverage-clover" target="../build/logs/clover.xml"/>
  <log type="junit" target="../build/logs/junit.xml" logIncompleteSkipped="false"/>
</logging>
</phpunit>

并且,在行命令中,报告文件正确生成,我的断言很好,一切都很完美。

但是,有一件小事让我发疯!我无法找到我必须在build.xml上编写什么命令,使用jenkins启动phpunit.xml我尝试了很多东西,jenkins继续说:

Total tests run: 0, Failures: 0, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.00100 s

我确定我的phpunit.xml已加载,但它根本不起作用......任何想法?

1 个答案:

答案 0 :(得分:0)

问题终于解决了:

build.xml中的

放置了phpunit.xml的完整路径:

<target name="phpunit" description="Launch unit testing">
    <echo msg="Start Unit testing" />
    <exec command="phpunit.bat --configuration=C:/wamp/www/myProject/tests/phpunit.xml" />
</target>

如果没有,你可以:

[exec] Could not read "./tests/phpunit.xml".

jenkins很高兴!

 [exec] [30;42m[2KOK (4 tests, 4 assertions)