[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