Hi,

I think the problem is your directory / class structure:

> Warning: class not found: 
> unit_modules_MyPaymentExtension_MyPaymentExtensionTest in 
> unit/modules/ModuleName/MyPaymentExtensionTest.php

Phpunit expects the class names to match the directories, with an underscore 
used as a separator.
This means that the MyPaymentExtensionTest.php file must be in the directory 
unit/modules/MyPaymentExtension/myPaymentExtensionTest.php (and not in 
unit/modules/ModuleName).
And your test class name must be 
unit_modules_MyPaymentExtension_MyPaymentExtensionTest (not just 
MyPaymentExtensionTest).

I'm not sure about the bootstrap.php changes, because we didn't edit this in 
our environment as far as i can remember. But it looks as if you include all 
tests from the directory unit/modules/ModuleName instead of 
unit/modules/MyPaymentExtension. I think you will have to change this to 
unit/modules/MyPaymentExtension, too.


I hope this helps you get the unit tests running... As Mažvydas said, it can be 
quite a lot of work when you get started with that. We've set up the unit tests 
in our XAMPP environment and that also required some experimenting and 
debugging until everything worked ;-)

Best regards from Dortmund! 
Robert Rosendahl | Entwicklung u. Support 

-- 

anzido GmbH 
Kirchhörder Str. 12 
44229 Dortmund 
Tel.: 0231 - 60 71 079 
Fax.: 0231 - 60 71 081 
Mobil:0176 - 8325 1488 
Email: [email protected] 
Web: http://www.anzido.com ( http://www.anzido.com/ ) 

USt-ID: DE257982972 
Geschäftsführung: Andreas Ziethen 
Amtsgericht Dortmund HRB 20883
-----Ursprüngliche Daten-----
Datum: 26.05.2011 21:16:48
Von: Mažvydas Skuodas <[email protected]>
An: <[email protected]>
Betreff: Re: [oxid-dev-general] Problems getting startet with writing unittests 
for oxid
Vorgang: T-M7DWPBGAHS-81

> Hi,
> 
> as you noticed, it takes long time to configure unittest environment
> (current one is outdated). but i think you affected by this bug:
> https://bugs.oxid-esales.com/view.php?id=2438
> in other words, then CC try to get executive lines, it include the file, and
> then the module is loaded it  includes the same file(class) again. so
> upgrade you oxid testing version, or fix on your shop locally as explain in
> bugtracker
> 
> Mazvydas
> 
> 
> On Thu, May 26, 2011 at 8:16 PM, André Herrmann
> <[email protected]> wrote:
> >
> > Hello Folks,
> >
> > in the last time i started to dive in into unit-testing in general with the
> > aim to certify modules in the nearer future. One of the first tutorials i
> > used to get familiar with unittesting in general was
> > http://netbeans.org/kb/docs/php/phpunit.html, which I found was very cool
> > doing things in netbeans IDE. After setting some globals in /etc/profile and
> > switching off all components of ZendServer to get xdebug working, I finally
> > got my first results.
> >
> > Encouraged by that I tried to set up the environment for oxid-unit testing.
> > Folowing the Wiki-entry in http://wiki.oxidforge.org/Certification/Modules I
> > downloaded the debian etch image (why such an old distro?) and tried to run
> > it first in virtual box instead of vmware player which did not work at all,
> > because the VM did not start up, hanging while mounting root file system.
> > Then I downloaded the VMware player to try the VM in its home environment.
> > At least the VM startet up, but had no network interface despite all
> > settings of VM showed me that there is a plugged network interface. So I
> > decided to set up my own appliance based on ubuntu-server 10.04 which seemed
> > to work better. I even have used the same Version of phpunit as given in the
> > tutorial. Instead of the tests and the shop given in the oxidVM I used 4.4.8
> > with unit tests that belong to that version. I installed the shop under
> > /var/www/oxidce4 and the tests under /var/www/oxunit4.4.8. So far with my
> > prologue...
> >
> > Following the oxid tutorial I got things to work with the given examples,
> > testing a single unit as well as running the AllTestsUnit without changing
> > anything.
> > I picked one of our modules and within this module I searched a class
> > extension ( with pattern class foo extends foo_parent ) which contained a
> > single method with a parameter and a return value. Perferct for testing I
> > thought.
> >
> > Here is what I tried:
> >
> > The base I wanted to write a test for is an extension of the oxpayment-class
> > and looked like this:
> >
> > class MyPaymentExtension extends MyPaymentExtension_parent {
> >
> > public function GetMode($sType = '') {
> > $blLiveMode = $this->oxpayments__livemode->value;
> > if($this->getId() == 'oxidcreditcard' && $sType != '') {
> > $blLivemode = $this->getConfig()->getConfigParam('blPayExt'.$sType.'Live');
> > } elseif($this->getId() == 'fcpoonlineueberweisung' && $sType != '') {
> > $blLivemode = $this->getConfig()->getConfigParam('blPayExt'.$sType.'Live');
> > }
> > if($blLiveMode === true) {
> > return 'live';
> > } else {
> > return 'test';
> > }
> > }
> > }
> >
> > This module is included the standard way in modules which in this case is:
> > oxpayment => ModuleName/core/MyPaymentExtension
> >
> > Next I started to write the unit-test for this method, which I put inside
> > the existing test suite in the unit/modules/ModuleName dir. It looked like
> > this:
> >
> > require_once realpath( "." ).'/unit/OxidTestCase.php';
> > require_once realpath( "." ).'/unit/test_config.inc.php';
> >
> >
> > class MyPaymentExtensionTest extends OxidTestCase {
> > public function testGetMode() {
> > $oPayment = oxNew( 'oxpayment' );
> > $this->assertEquals('test', $oPayment->GetMode());
> > $this->assertEquals('test', $oPayment->GetMode('blubb'));
> > $this->assertEquals('test', $oPayment->GetMode('#++@'));
> > $this->assertEquals('test', $oPayment->GetMode('????????????'));
> > $this->assertEquals('test', $oPayment->GetMode(2343523));
> > }
> > }
> >
> > Due I only wanted to test my module and wanted to generate a code coverage
> > report I changed the bootstrap.php file as suggested:
> >
> > if (getenv('CODECOVERAGE')) {
> > // PHPUnit_Util_Filter configuration
> > PHPUnit_Util_Filter::$addUncoveredFilesFromWhitelist = true;
> > /*
> > PHPUnit_Util_Filter::addDirectoryToFilter(oxPATH);
> > */
> >
> > PHPUnit_Util_Filter::addDirectoryToWhitelist(oxPATH.'/modules/ModuleName');
> > }
> >
> > And finally I changed the AllTestsUnit.php and removed all TestDirs despite
> > the modules dir
> > $aTestDirs = array('modules/ModuleName');
> >
> > I thought everything is fine now, that I could test this, but I ran into
> > trouble which you can read here:
> >
> > www-data@andre-zend2:~/oxunit4.4.8$ oxPATH=/var/www/oxidce4/ CODECOVERAGE=1
> > oxADMIN_PASSWD='heimat' php -d 'memory_limit=1024M' -d
> > 'include_path=.:/home/oxid/PHPUnit-3.4.9'
> > /home/oxid/PHPUnit-3.4.9/phpunit.php --verbose --bootstrap bootstrap.php
> > --coverage-html /var/www/oxidce4/reports/ AllTestsUnit.php
> > db Dumptime: 0.51274800300598
> > =========
> > running php version 5.2.17
> >
> > ============
> > Adding unit tests from unit/modules/ModuleName/*Test.php
> >
> >
> > Warning: class not found:
> > unit_modules_MyPaymentExtension_MyPaymentExtensionTest in
> > unit/modules/ModuleName/MyPaymentExtensionTest.php
> >
> >
> > PHPUnit 3.4.9 by Sebastian Bergmann.
> >
> > PHPUnit
> >
> >
> > Time: 1 second, Memory: 24.00Mb
> >
> > OK (0 tests, 0 assertions)
> >
> > Generating code coverage report, this may take a moment.TSOK
> > Fatal error: Class 'roles_bemain' not found in
> > /var/www/oxidce4/core/oxutilsobject.php(331) : eval()'d code on line 1
> >
> > Call Stack:
> > 0.0003 49836 1. {main}() /home/oxid/PHPUnit-3.4.9/phpunit.php:0
> > 0.0381 4138132 2. PHPUnit_TextUI_Command::main()
> > /home/oxid/PHPUnit-3.4.9/phpunit.php:54
> > 0.0381 4138648 3. PHPUnit_TextUI_Command->run()
> > /home/oxid/PHPUnit-3.4.9/PHPUnit/TextUI/Command.php:146
> > 0.5989 8049212 4. PHPUnit_TextUI_TestRunner->doRun()
> > /home/oxid/PHPUnit-3.4.9/PHPUnit/TextUI/Command.php:213
> > 0.5994 8055268 5. PHPUnit_Util_Report::render()
> > /home/oxid/PHPUnit-3.4.9/PHPUnit/TextUI/TestRunner.php:478
> > 0.5994 8055908 6. PHPUnit_Framework_TestResult->getCodeCoverageInformation()
> > /home/oxid/PHPUnit-3.4.9/PHPUnit/Util/Report.php:97
> > 0.5995 8055988 7. PHPUnit_Util_Filter::getFilteredCodeCoverage()
> > /home/oxid/PHPUnit-3.4.9/PHPUnit/Framework/TestResult.php:623
> > 0.8635 11172876 8.
> > include_once('/var/www/oxidce4/modules/ModuleName/admin/MyRolesBeMain.php')
> > /home/oxid/PHPUnit-3.4.9/PHPUnit/Util/Filter.php:381
> > 0.8635 11173172 9. oxAutoload() /var/www/oxidce4/core/oxfunctions.php:0
> > 0.8644 11175076 10. oxUtilsObject->getClassName()
> > /var/www/oxidce4/core/oxfunctions.php:103
> > 0.8648 11175564 11. oxUtilsObject->_makeSafeModuleClassParents()
> > /var/www/oxidce4/core/oxutilsobject.php:264
> > 0.8651 11177856 12. eval(''class MyRolesBeMain_parent extends roles_bemain
> > {}'') /var/www/oxidce4/core/oxutilsobject.php:331
> >
> > www-data@andre-zend2:~/oxunit4.4.8$
> >
> > Because there is not much documentation out there which helps getting
> > started by using a familiar example and my inexperience with Unit-Tests I am
> > currently not able to help myself getting into deep with this issue.
> >
> > I really would be glad if there is someone out there who could confirm or
> > deny my acting to get my first test of an oxid extension work.
> >
> > Perhaps based on this example together we could work out a tutorial which
> > will help developers out there writing tests for their modules and enhance
> > the quality of 3rd Party Modules.
> >
> > Thanks for reading and perservering
> >
> > Regards
> >
> > André
> > _______________________________________________
> > dev-general mailing list
> > [email protected]
> > http://dir.gmane.org/gmane.comp.php.oxid.general
> _______________________________________________
> dev-general mailing list
> [email protected]
> http://dir.gmane.org/gmane.comp.php.oxid.general

_______________________________________________
dev-general mailing list
[email protected]
http://dir.gmane.org/gmane.comp.php.oxid.general

Reply via email to