[dev] Test related improvements
Michael M Slusarz
slusarz at horde.org
Mon Apr 22 03:46:23 UTC 2013
Quoting Jan Schneider <jan at horde.org>:
> Zitat von Michael M Slusarz <slusarz at horde.org>:
>
>> 2) horde_lz4 is currently our only PECL package. AFAICT, PHPUnit
>> does not support PECL style tests - we are limited to built-in PEAR
>> tests. Correct?
>>
>> 3) If #2 is correct, we should also add a test runner that runs PECL tests.
>
> Is there something like special PECL tests? I expected those were
> normal PHPT test, testing the interfaces of a *built* extension.
> I.e. they don't test or even include building of the extension. But
> I might be wrong.
Yeah, the difficulty in requiring a build/compile complicates things.
For now, I think the current status quo is fine. I'm not expecting
many (any?) changes in horde_lz4 in the future, and if they do occur
it is not unreasonable to run the PECL unit tests manually.
>> 5) Ran into the test paradigm yesterday where I wanted to test
>> multiple backends with the same data/tests. For now, I created one
>> test as the "master" (e.g. Horde_Imap_Client_Test_CacheTest), and
>> then overwrote only the parts needed to setup the backend in
>> another test (Horde_Imap_Client_Test_DbTest).
>>
>> Obviously, the better solution would be to create a "master" test
>> that all active tests directly extend. The problem with this
>> approach is that the "master" test must extend
>> PHPUnit_Framework_TestCase itself and, as such, it will attempt to
>> be run as a unit test by the phpunit test runner.
>>
>> You hackishly could work around this by having the base setUp()
>> method call markTestSkipped -- and have the extended class
>> overwrite this -- but this is not a proper solution since it will
>> cause tests to appear as being skipped which is not the case.
>>
>> Any ideas on how to do this properly? I'm sure there is a way to
>> tell phpunit to "filter" the name of files not to run, but this
>> also seems hackish.
>
> We do this already in many places where we have different backends,
> e.g. Horde_Group, Horde_Share, kronolith, turba. The trick is to
> call the base class something like TestBase.php, i.e. not ending
> with "Test".
Thanks for the pointer. This has been fixed up in Horde_Imap_Client.
michael
___________________________________
Michael Slusarz [slusarz at horde.org]
More information about the dev
mailing list