How To Create A Unit Test File In Magento 2

Hello Magento Folks,

In this article, I will illustrate How To Create A Unit Test File In Magento 2 and How to Run Unit Test in Magento 2. I am writing this for all the beginners who just started with Magento and need to learn about the unit tests. Also, check out our previously placed blog where I have explained How to Use Local & Cookie Storage using JavaScript modules in Magento 2. We will also go through the Command Line Interface (CLI) and PHPStorm IDE in this article. 

What is Unit Testing?

Basically, unit testing is known as a part of software testing where each and every small unit of the software is tested. The main cause of this is for the validation of the software code which works as expected. Unit testing is conducted when the development process of the application.

Why do you need Unit Testing? 

Mainly unit testing is performed to diminish the number of bugs/errors occurred during production. The precise unit testing is carried out from the closest developer to the project and with the help of these unit tests, all other developers will get an opportunity to understand and learn the code more precisely.

Benefits of Unit Testing:

Detect Problems Early – With unit testing, you can find common errors and corrections at the time of development itself.

Help in Changes – Upgrading the libraries and refactoring code will be easy in the future with the help of unit testing. 

Design – Testing code beforehand will help you create better designs.

Save Time – Unit testing at regular intervals will reduce errors and this will reduce the time of testing.

In Magento 2, unit testing means validating pieces of code. Unit testing will help to make sure that the code matches the Magento standards.

Steps to Create A Unit Test File In Magento 2:

Step 1: Create the Unittest.php file at the given below path and add code.

app\code\Vendor\Extension\Model\

<?php

namespace Vendor\Extension\Model;

class Unittest
{
    /**

     * this function will perform the addition of two numbers

     *

     * @param int $no1

     * @param int $no2

     * @return int

     */

    Public function additiondata($no1 ,$no2)
   {
        return $no1 + $no2;
    }
}

Step 2: Create the Unittest.php file at the given below path and add code.

app\code\Vendor\Extension\Test\Unit\Model\

<?php

namespace Vendor\Extension\Test\Unit\Model;

class Unittest extends \PHPUnit\Framework\TestCase
{
    public function setUp() : void
    {
        $this->_objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);

        $this->_calculator = $this->_objectManager->getObject("Vendor\Extension\Model\Unittest");
    }

    /**

     * this function will perform the addition of two numbers

     *

     * @param int $no1

     * @param int $no2

     * @return int

     */

    public function testcaseAddition(): void
    {
        $this->_actulResult = $this->_calculator->additiondata(7,7); // call additiondata method  from model  file

        $this->_desiredResult = 14; // actual result compare  set

        $this->assertEquals($this->_desiredResult, $this->_actulResult); /* check test case match or not if true the give ok message otherwise give error */
    }
}

How to Run Unit Test in Magento 2?

Test all the Unit test in Magento Core modules

php bin/magento dev:tests:run unit

Unit test for a specific module

php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Vendor/Extension

Unit Test for a specific file

php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Vendor/Extension/Test/Unit/Model/Unittest.php

Wrap Up: 

Hopefully, all are able to Create A Unit Test File and Run Unit Test In Magento 2 using the above-given illustration. In case of any errors, you face during the unit file creation you can ask me in the comment section below. Don’t forget to hit the 5 stars

Share the article with your new developer friends

Happy Reading

Previous Article

Magento 2: How to Add Quantity Increment & Decrement Functionality at Checkout Summary

Next Article

Choosing the Best Payment Gateway: 7 Essential Tips and Checklist

Write a Comment
  1. Mahesh Makwana

    Please replace file name Unittest.php -> UnitTest.php after changing the file above example works fine. also, change the CLI command.

    php vendor/phpunit/phpunit/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Vendor/Extension/Test/Unit/Model/UnitTest.php

Leave a Comment

Your email address will not be published. Required fields are marked *

Get Connect With Us

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨