Hi and thanks in advance for your patience - I really appreciate the patience this community has shown me despite my silly questions. I'm using Drupal 9 and have just read this tutorial on unit testing in Drupal 7, but it doesn't seem to be working for me. It's unclear to me whether I'm doing something wrong or the instructions simply aren't valid anymore:
www-data@fa5bab330dc3:/opt/drupal/web$ php core/scripts/run-tests.sh --verbose --url http://example.com/ --class "Drupal\Tests\rsvplist\Unit\RSVPListServiceTest"
ERROR: Test class not found: Drupal\Tests\rsvplist\Unit\RSVPListServiceTest
I have tried pointing run-tests.php
to a specific directory but that doesn't seem to work either:
www-data@fa5bab330dc3:/opt/drupal/web$ php core/scripts/run-tests.sh --verbose --url http://example.com/ --directory modules/custom/
ERROR: No valid tests were specified.
I tried the above with variations on the directory, including modules/custom/rsvplist
and /opt/drupal/web/modules/custom/rsvplist/tests/src/unit/
(the location of the test file itself), but always got the same error.
When running unit tests via phpunit
directly I seem to be able to get it to work:
www-data@fa5bab330dc3:/opt/drupal/web/core$ phpunit ../modules/custom/rsvplist
PHPUnit 8.0.0 by Sebastian Bergmann and contributors.
Testing ../modules/custom/rsvplist
R 1 / 1 (100%)
Time: 123 ms, Memory: 6.00 MB
There was 1 risky test:
1) Drupal\Tests\rsvplist\Unit\RSVPListServiceTest::testSomething
This test did not perform any assertions
/opt/drupal/web/modules/custom/rsvplist/tests/src/unit/EnablerServiceTest.php:14
/opt/drupal/vendor/phpunit/phpunit/src/Framework/TestResult.php:860
/opt/drupal/vendor/phpunit/phpunit/src/Framework/TestSuite.php:761
/opt/drupal/vendor/phpunit/phpunit/src/Framework/TestSuite.php:761
/opt/drupal/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:632
/opt/drupal/vendor/phpunit/phpunit/src/TextUI/Command.php:208
/opt/drupal/vendor/phpunit/phpunit/src/TextUI/Command.php:164
OK, but incomplete, skipped, or risky tests!
Tests: 1, Assertions: 0, Risky: 1.
I'd like to run my tests via run-tests.sh
as I'd like to use the Drupal\KernelTests\KernelTestBase
class so that I can mock out database connections, and as I understand it this should be done via run-tests.sh
and not phpunit
. Obviously I'd like to resolve the errors above but I'm also happy to be shown a different / better way of achieving what I'm trying to do.
Here is my test class, located in modules/custom/rsvplist/tests/src/unit/EnablerServiceTest.php:
<?php
namespace Drupal\Tests\rsvplist\Unit;
use Drupal\Tests\UnitTestCase;
class RSVPListServiceTest extends UnitTestCase {
public function testSomething() {
}
}