PHPUnit CIUnit问题

时间:2013-04-19 06:55:50

标签: php codeigniter jenkins phpunit

当我运行特定的测试套件时,

phpunit --testsuite LibTests

我得到了我预期的结果(通过测试)。但是,当我运行“phpunit”时,我收到错误声明:

Fatal error: Call to a member function rss_feed_url() on a non-object in /Users/Shared/Jenkins/Home/jobs/Fanpilot_CT_3.0/workspace/tests/libs/VoltampMediaRSSFeedTest.php on line 20

其中rss_feed_url()是我在setup()中加载的类的方法。

以下是我的phpunit.xml文件的片段

<testsuites>
    <testsuite name="LibTests">
      <directory suffix=".php">tests/libs</directory>
    </testsuite>
</testsuites>

提前致谢!

2 个答案:

答案 0 :(得分:1)

问题是我没有将$ this-&gt; CI重新初始化为适当的控制器。从上次测试开始,这是陈旧的。在每个setUp()m中,您需要确保初始化$ this-CI,如下所示:

$this->CI = set_controller();

就我而言,我有一个自定义的MY_Controller(applications / core / My_Controller.php)。因此,如果我需要利用自定义控制器,我可以这样做。

$this->CI = set_controller('MY_Controller');

作为旁注,我最终通过在CIU_Loader方法_ci_load_class中转储get_class和get_parent_class来解决这个问题,并且我注意到这些值取决于我是将其作为单个测试还是作为所有内容运行。

答案 1 :(得分:0)

在phpunit中似乎大多数类变量在测试方法之间没有设置。如果这是问题(听起来像它,非对象错误)。我相信我通过将这些变量设为私有和/或静态来解决这个问题。