<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dennis Tabaldo</title>
    <description>The latest articles on DEV Community by Dennis Tabaldo (@mrdt12).</description>
    <link>https://dev.to/mrdt12</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F90398%2F6e77d32e-d94b-4dcd-a42b-cb974a8c03a1.jpg</url>
      <title>DEV Community: Dennis Tabaldo</title>
      <link>https://dev.to/mrdt12</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrdt12"/>
    <language>en</language>
    <item>
      <title>Laravel Testing Environment Setup</title>
      <dc:creator>Dennis Tabaldo</dc:creator>
      <pubDate>Thu, 26 Mar 2026 14:51:57 +0000</pubDate>
      <link>https://dev.to/mrdt12/laravel-testing-environment-setup-4c6l</link>
      <guid>https://dev.to/mrdt12/laravel-testing-environment-setup-4c6l</guid>
      <description>&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;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;APP_NAME&lt;/span&gt;=&lt;span class="n"&gt;laravel&lt;/span&gt;
&lt;span class="n"&gt;APP_ENV&lt;/span&gt;=&lt;span class="n"&gt;local&lt;/span&gt;
&lt;span class="n"&gt;APP_KEY&lt;/span&gt;= &lt;span class="c"&gt;# application key
&lt;/span&gt;&lt;span class="n"&gt;APP_DEBUG&lt;/span&gt;=&lt;span class="n"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;APP_URL&lt;/span&gt;=&lt;span class="n"&gt;http&lt;/span&gt;://&lt;span class="n"&gt;laravel&lt;/span&gt;.&lt;span class="n"&gt;test&lt;/span&gt;

&lt;span class="n"&gt;APP_LOCALE&lt;/span&gt;=&lt;span class="n"&gt;en&lt;/span&gt;
&lt;span class="n"&gt;APP_FALLBACK_LOCALE&lt;/span&gt;=&lt;span class="n"&gt;en&lt;/span&gt;
&lt;span class="n"&gt;APP_FAKER_LOCALE&lt;/span&gt;=&lt;span class="n"&gt;en_US&lt;/span&gt;

&lt;span class="n"&gt;APP_MAINTENANCE_DRIVER&lt;/span&gt;=&lt;span class="n"&gt;file&lt;/span&gt;

&lt;span class="n"&gt;BCRYPT_ROUNDS&lt;/span&gt;=&lt;span class="m"&gt;12&lt;/span&gt;

&lt;span class="n"&gt;DB_CONNECTION&lt;/span&gt;=&lt;span class="n"&gt;mysql&lt;/span&gt;
&lt;span class="n"&gt;DB_HOST&lt;/span&gt;=&lt;span class="m"&gt;127&lt;/span&gt;.&lt;span class="m"&gt;0&lt;/span&gt;.&lt;span class="m"&gt;0&lt;/span&gt;.&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;DB_PORT&lt;/span&gt;=&lt;span class="m"&gt;3306&lt;/span&gt;
&lt;span class="n"&gt;DB_DATABASE&lt;/span&gt;= &lt;span class="c"&gt;# your testing database (e.g., laravel-testing)
&lt;/span&gt;&lt;span class="n"&gt;DB_USERNAME&lt;/span&gt;=&lt;span class="n"&gt;root&lt;/span&gt;
&lt;span class="n"&gt;DB_PASSWORD&lt;/span&gt;=

&lt;span class="n"&gt;SESSION_DRIVER&lt;/span&gt;=&lt;span class="n"&gt;database&lt;/span&gt;
&lt;span class="n"&gt;SESSION_LIFETIME&lt;/span&gt;=&lt;span class="m"&gt;120&lt;/span&gt;
&lt;span class="n"&gt;SESSION_ENCRYPT&lt;/span&gt;=&lt;span class="n"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;SESSION_PATH&lt;/span&gt;=/
&lt;span class="n"&gt;SESSION_DOMAIN&lt;/span&gt;=&lt;span class="n"&gt;null&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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;p&gt;🧪 2. Configure phpunit.xml&lt;/p&gt;

&lt;p&gt;Update your phpunit.xml file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;phpunit&lt;/span&gt; &lt;span class="na"&gt;xmlns:xsi=&lt;/span&gt;&lt;span class="s"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;
         &lt;span class="na"&gt;xsi:noNamespaceSchemaLocation=&lt;/span&gt;&lt;span class="s"&gt;"vendor/phpunit/phpunit/phpunit.xsd"&lt;/span&gt;
         &lt;span class="na"&gt;bootstrap=&lt;/span&gt;&lt;span class="s"&gt;"vendor/autoload.php"&lt;/span&gt;
         &lt;span class="na"&gt;colors=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;testsuites&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;testsuite&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Unit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;directory&amp;gt;&lt;/span&gt;tests/Unit&lt;span class="nt"&gt;&amp;lt;/directory&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/testsuite&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;testsuite&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Feature"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;directory&amp;gt;&lt;/span&gt;tests/Feature&lt;span class="nt"&gt;&amp;lt;/directory&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/testsuite&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/testsuites&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;source&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;include&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;directory&amp;gt;&lt;/span&gt;app&lt;span class="nt"&gt;&amp;lt;/directory&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/include&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/source&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;php&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"APP_ENV"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"testing"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"APP_MAINTENANCE_DRIVER"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"BCRYPT_ROUNDS"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"4"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"BROADCAST_CONNECTION"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"null"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"CACHE_STORE"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"array"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"DB_CONNECTION"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"mysql"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="c"&gt;&amp;lt;!-- &amp;lt;env name="DB_DATABASE" value="your-testing-db"/&amp;gt; --&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"DB_URL"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"MAIL_MAILER"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"array"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"QUEUE_CONNECTION"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"sync"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"SESSION_DRIVER"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"array"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"PULSE_ENABLED"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"TELESCOPE_ENABLED"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;env&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"NIGHTWATCH_ENABLED"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/php&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/phpunit&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🚀 3. Run Tests&lt;/p&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;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan &lt;span class="nb"&gt;test&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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>test</category>
      <category>laravel</category>
      <category>phpunit</category>
    </item>
  </channel>
</rss>
