Hi Richard,
To reference your WordPress plugin project in your test project and expose its classes to the IDE, you can set up your solution like this:
1. Create Two Projects
MainProject: This is your WordPress plugin project containing the classes you want to test.
TestProject: A PHP console project where you write your tests.
Add a project reference from TestProject to MainProject so IntelliSense can recognize the plugin's classes.
Note: If classes from MainProject are not appearing in TestProject, it might be due to a bug in how project references are handled in our new project system. We are working on resolving this.
2. Configure PHPUnit in TestProject
First, you need to install PHPUnit. Right-click on Dependencies in the Solution Explorer and select Install New Composer Packages.
Search for phpunit and install it as a development dependency.
Add the following to your phpunit.xml file:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.3/phpunit.xsd"
backupGlobals="true"
backupStaticAttributes="false"
bootstrap="bootstrap.php">
<testsuites>
<testsuite name="My Test Suite">
<directory>.</directory>
</testsuite>
</testsuites>
</phpunit>
3. Create a bootstrap.php file in TestProject
Create a bootstrap.php file with the following contents:
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/../MainProject');
spl_autoload_register();
4. Write a Test in TestProject
Create a file like ExampleTest.php with the following contents:
<?php
class ExampleTest extends \PHPUnit\Framework\TestCase
{
public function testAddition()
{
$calculator = new Calculator();
$this->assertEquals(5, $calculator->add(2, 3));
}
}
5. Define the Class in MainProject
In MainProject, create the Calculator class:
<?php
class Calculator
{
public function add($a, $b)
{
return $a + $b;
}
}
This setup ensures that your TestProject has access to the classes in MainProject and that you can easily write tests for your WordPress plugin. Let me know if you encounter any issues!