<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged phpunit</title>
<link>https://coderlegion.com/tag/phpunit</link>
<description>Powered by Question2Answer</description>
<item>
<title>Laravel Testing Environment Setup</title>
<link>https://coderlegion.com/13653/laravel-testing-environment-setup</link>
<description>&lt;hr&gt;
&lt;p&gt;title:  Laravel Testing Environment Setup&lt;br&gt;
published: true&lt;br&gt;
description: &lt;br&gt;
tags: #test #laravel #phpunit&lt;/p&gt;
&lt;h2 id=&quot;published-at-2026-03-26-14-38-0000&quot;&gt;published_at: 2026-03-26 14:38 +0000&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;This guide explains how to properly configure a testing environment in Laravel using .env.testing and phpunit.xml.&lt;/p&gt;
&lt;p&gt; Overview&lt;/p&gt;
&lt;p&gt;When running automated tests, you should isolate your testing environment from development and production. This prevents accidental data loss and improves test reliability.&lt;/p&gt;
&lt;p&gt;⚙️ 1. Create .env.testing&lt;/p&gt;
&lt;p&gt;Create a .env.testing file in the root of your Laravel project:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-conf&quot;&gt;APP_NAME=laravel
APP_ENV=local
APP_KEY= # application key
APP_DEBUG=true
APP_URL=http://laravel.test

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file

BCRYPT_ROUNDS=12

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE= # your testing database (e.g., laravel-testing)
DB_USERNAME=root
DB_PASSWORD=

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=true
SESSION_PATH=/
SESSION_DOMAIN=null

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ Notes&lt;br&gt;
Use a separate database for testing.&lt;br&gt;
Never reuse your development or production database.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Configure phpunit.xml&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Update your phpunit.xml file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;phpunit xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:noNamespaceSchemaLocation=&quot;vendor/phpunit/phpunit/phpunit.xsd&quot;
         bootstrap=&quot;vendor/autoload.php&quot;
         colors=&quot;true&quot;
&amp;gt;
    &amp;lt;testsuites&amp;gt;
        &amp;lt;testsuite name=&quot;Unit&quot;&amp;gt;
            &amp;lt;directory&amp;gt;tests/Unit&amp;lt;/directory&amp;gt;
        &amp;lt;/testsuite&amp;gt;
        &amp;lt;testsuite name=&quot;Feature&quot;&amp;gt;
            &amp;lt;directory&amp;gt;tests/Feature&amp;lt;/directory&amp;gt;
        &amp;lt;/testsuite&amp;gt;
    &amp;lt;/testsuites&amp;gt;

    &amp;lt;source&amp;gt;
        &amp;lt;include&amp;gt;
            &amp;lt;directory&amp;gt;app&amp;lt;/directory&amp;gt;
        &amp;lt;/include&amp;gt;
    &amp;lt;/source&amp;gt;

    &amp;lt;php&amp;gt;
        &amp;lt;env name=&quot;APP_ENV&quot; value=&quot;testing&quot;/&amp;gt;
        &amp;lt;env name=&quot;APP_MAINTENANCE_DRIVER&quot; value=&quot;file&quot;/&amp;gt;
        &amp;lt;env name=&quot;BCRYPT_ROUNDS&quot; value=&quot;4&quot;/&amp;gt;

        &amp;lt;env name=&quot;BROADCAST_CONNECTION&quot; value=&quot;null&quot;/&amp;gt;
        &amp;lt;env name=&quot;CACHE_STORE&quot; value=&quot;array&quot;/&amp;gt;
        &amp;lt;env name=&quot;DB_CONNECTION&quot; value=&quot;mysql&quot;/&amp;gt;
        &amp;lt;!-- &amp;lt;env name=&quot;DB_DATABASE&quot; value=&quot;your-testing-db&quot;/&amp;gt; --&amp;gt;
        &amp;lt;env name=&quot;DB_URL&quot; value=&quot;&quot;/&amp;gt;

        &amp;lt;env name=&quot;MAIL_MAILER&quot; value=&quot;array&quot;/&amp;gt;
        &amp;lt;env name=&quot;QUEUE_CONNECTION&quot; value=&quot;sync&quot;/&amp;gt;
        &amp;lt;env name=&quot;SESSION_DRIVER&quot; value=&quot;array&quot;/&amp;gt;

        &amp;lt;env name=&quot;PULSE_ENABLED&quot; value=&quot;false&quot;/&amp;gt;
        &amp;lt;env name=&quot;TELESCOPE_ENABLED&quot; value=&quot;false&quot;/&amp;gt;
        &amp;lt;env name=&quot;NIGHTWATCH_ENABLED&quot; value=&quot;false&quot;/&amp;gt;
    &amp;lt;/php&amp;gt;
&amp;lt;/phpunit&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;Run Tests&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Before running tests:&lt;/p&gt;
&lt;p&gt;Ensure your testing database exists&lt;br&gt;
Run migrations if needed&lt;/p&gt;
&lt;p&gt;Then execute:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;php artisan test

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;⚡ Tips&lt;br&gt;
Isolation: APP_ENV=testing ensures .env.testing is used.&lt;br&gt;
Performance:&lt;br&gt;
CACHE_STORE=array&lt;br&gt;
SESSION_DRIVER=array&lt;br&gt;
QUEUE_CONNECTION=sync&lt;br&gt;
Faster Hashing:&lt;br&gt;
Reduce BCRYPT_ROUNDS during testing&lt;br&gt;
Disable Extras:&lt;br&gt;
Disable tools like Telescope, Pulse, etc., to speed up tests&lt;/p&gt;
&lt;p&gt;✅ Summary&lt;/p&gt;
&lt;p&gt;With this setup:&lt;/p&gt;
&lt;p&gt;Tests run faster ⚡&lt;br&gt;
Data remains safe &lt;br&gt;
Environment stays isolated &lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/13653/laravel-testing-environment-setup</guid>
<pubDate>Sun, 29 Mar 2026 14:36:21 +0000</pubDate>
</item>
</channel>
</rss>