mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Update to 00_Unit_Testing
Additional section with instructions on running tests using in memory SQLite,
This commit is contained in:
parent
751264fd6a
commit
f61cedc03c
@ -116,6 +116,46 @@ limited than using `phpunit` directly, particularly around formatting test outpu
|
|||||||
sake dev/tests/all SkipTests=MySkippedTest
|
sake dev/tests/all SkipTests=MySkippedTest
|
||||||
# Skip some tests
|
# Skip some tests
|
||||||
|
|
||||||
|
## Making Tests Run Fast
|
||||||
|
A major impedement to testing is that by default tests are extremely slow to run. There are two things that can be done to speed them up:
|
||||||
|
|
||||||
|
### Disable xDebug
|
||||||
|
Unless executing a coverage report there is no need to have xDebug enabled.
|
||||||
|
|
||||||
|
:::bash
|
||||||
|
# Disable xdebug
|
||||||
|
sudo php5dismod xdebug
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
phpunit framework/tests/
|
||||||
|
|
||||||
|
# Enable xdebug
|
||||||
|
sudo php5enmod xdebug
|
||||||
|
|
||||||
|
### Use SQLite In Memory
|
||||||
|
SQLIte can be configured to fun in memory as opposed to disk and this makes testing an order of magnitude faster. To effect this change add the following to mysite/_config.php - this enables an optional flag to switch between MySQL and SQLite. Note also that the package silverstripe/sqlite3 will need installed, version will vary depending on which version of SilverStripe is being tested.
|
||||||
|
|
||||||
|
:::php
|
||||||
|
if(Director::isDev()) {
|
||||||
|
if(isset($_GET['db']) && ($db = $_GET['db'])) {
|
||||||
|
global $databaseConfig;
|
||||||
|
if($db == 'sqlite3') {
|
||||||
|
$databaseConfig['type'] = 'SQLite3Database';
|
||||||
|
$databaseConfig['path'] = ':memory:';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
To use SQLite append '' db=sqlite3 after the phpunit command.
|
||||||
|
|
||||||
|
:::bash
|
||||||
|
phpunit framework/tests '' db=sqlite3
|
||||||
|
|
||||||
|
### Speed Comparison
|
||||||
|
Testing against a medium sized module with 93 tests:
|
||||||
|
* SQLite - 16.15s
|
||||||
|
* MySQL - 314s
|
||||||
|
This means using SQLite will run tests over 20 times faster.
|
||||||
|
|
||||||
## Test Databases and Fixtures
|
## Test Databases and Fixtures
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user