×

iFour Logo

Integration of unit testing with ASP.NET Core

Kapil Panchal - December 15, 2020

Listening is fun too.

Straighten your back and cherish with coffee - PLAY !

  • play
  • pause
  • pause
Integration of unit testing with ASP.NET Core

Unit testing is used to test individual components or units to determine if there are any issues by the developer himself. The unit testing is used to validate that each component of the software code performs as expected. The unit testing is concerned with the functional correctness of standalone modules and it is done by the developer during the development phase of an application.

Why do we need unit tests?

Unit testing is important because the software can fail in unexpected ways. Manual testing is slow, least reliable, and expensive to test an application. Whereas, unit testing saves time and money if it is implemented properly.

Here, are a few key reasons to perform unit testing:

  • Unit tests are used to fix bugs early in the development phase and save costs and time.
  • It is used by the developers to understand the code base and then it enables them to make changes quickly.
  • Good unit testing serves as project documentation of software.
  • Unit tests are used to re-use code and they are easy as well to identify defects in any application.

Unit Testing Tools


There are many automated tools available to test the application.

Few examples as below:

1) Junit

Junit

Junit is a free testing tool used by the developer for Java programming language. It implements assertions to identify the test method. Junit is used to test data first and then inserted in the piece of code.

   


2) NUnit

NUnit

NUnit is a framework widely used by the developer to unit-test an application that is developed in all .NET languages. Nunit is open source and supports data-driven tests that run parallelly. Nunit allows the developer to write a script manually.

   


3) PHPUnit

PHPUnit

PHPUnit is a unit testing tool used by the developer to test an application. PHPUnit tests a small portion of code known as units. PHPUnit provides a pre-define assertion to assert that the system behaves in a proper manner.

   


4) JMockit

JMockit

JMockit is open-source Unit testing with line and path metrics. JMockit allows the developer to record and verifying syntax in API and offers Line coverage, Path Coverage, and Data Coverage.

 
  


5) EMMA

EMMA

EMMA is an open-source toolkit used by the developer for analyzing and reporting code written in Java language. Emma is a java-based external library and support method, line, basic block coverage type.

 

Setting up Unit testing in ASP.NET Core Application


There are many test frameworks available in the market but we will be going to use the xUnit, which is a very popular testing framework. The simplest way to create unit test case for an ASP.NET Core web app project is to create a new test project using a template.

We can create a test class for each application class. The simple unit test includes three-step:

  • Arrange: In this step setup the necessary variable and object.
  • Act: In this step, call the method with a required parameter for testing
  • Assert: In this step, the expected result is verified

 

Create a sample ASP.NET Core application


To create ASP.NET Core Console Application follow the below steps:

Step 1:Open Visual Studio, select File option -> New option -> Project

Step 2:elect the ASP.NET Core Console Application template and click Next.

Step 3:Enter the project name, and then click Create.

asp-dot-net-web-applications

 

Figure 1 Create an application

Step 4:Create a new class

Add new class Calculator.cs

namespace UniTestDemo
{
  public static class Calculator
  {
      public static double Addition(double num1, double num2)
      {
          return (num1 + num2);
      }

      public static double Subtraction(double num1, double num2)
      {
          return (num1 - num2);
      }

      public static double Multiplication(double num1, double num2)
      {
          return (num1 * num2);
      }

      public static double Division(double num1, double num2)
      {
          return (num1 / num2);
      }
  }
}
              


Now, Add Testing Project

1: In Visual Studio 2019, Right-click on solution-> Add -> Project.

2: In the Create New Project dialog, select the Test ->xUnit Test Project (.Net Core) template, and click Next.

3: Enter the project name, and then click Create.

asp-dot-net-web-applications

 

Figure 2 Add Testing Project

Step 5:Add Reference to your project

Right-click on your Testing project (XTestDEmo)->Add->reference

asp-dot-net-web-applications

 

Figure 3 Add Reference to the testing project

Searching for Dedicated ASP.Net Core Web Developer ? Your Search ends here.

 

Step 6:Now, Add one class in 'XTestDEmo' project named 'TestCalculator.cs'

In 'TestCalculator.cs' class we will write test case for method define in 'Calculator.cs'. These methods follow three-step: Arrange, Act, Assert.

The following class contains test cases for Calculator:

using System;
using UniTestDemo;
using Xunit;

namespace XTestDEmo
{
  public class TestCalculator
  {
      [Fact]
      public void Test_Addition()
      {
          // Arrange  
          var number1 = 4.9;
          var number2 = 3.1;
          var expectedValue = 8;

          // Act  
          var sum = Calculator.Addition(number1, number2);

          //Assert  
          Assert.Equal(expectedValue, sum, 1);
      }

      [Fact]
      public void Task_Subtract_TwoNumber()
      {
          // Arrange  
          var number1 = 3.2;
          var number2 = 1.5;
          var expectedValue = 1.7;

          // Act  
          var sub = Calculator.Subtraction(number1, number2);

          //Assert  
          Assert.Equal(expectedValue, sub, 1);
      }

      [Fact]
      public void Test_Multiplication()
      {
          // Arrange  
          var number1 = 2.5;
          var number2 = 3.5;
          var expectedValue = 8.75;

          // Act  
          var mult = Calculator.Multiplication(number1, number2);

          //Assert  
          Assert.Equal(expectedValue, mult, 2);
      }

      [Fact]
      public void Test_division()
      {
          // Arrange  
          var number1 = 2.9;
          var number2 = 3.1;
          var expectedValue = 0.94; //Rounded value  

          // Act  
          var div = Calculator.Division(number1, number2);

          //Assert  
          Assert.Equal(expectedValue, div, 2);
      }
  }
}
                

Step 7: Now, Run your test cases

For running all test cases open Test Explorer where you will find you're all test case. To run click on RunAll this will start executing test cases.

To open Test Explorer in visual studio Click on Test option->Window->Test Explorer.

asp-dot-net-web-applications

 

Figure 4 Opening Task Explorer

Once your test case runs successfully, the output screen will be shown as below.

asp-dot-net-web-applications

 

Figure 5 Output

Conclusion


In this blog, we have discussed the unit testing with ASP.NET which is used by the developer for issuing defects and we have also portrayed the purpose of unit testing. We illustrated a simple example of a unit test with Xunit using the ASP.NET Console application. We hope you will acquire a clear understanding on how to integrate unit testing.

Integration of unit testing with ASP.NET Core Unit testing is used to test individual components or units to determine if there are any issues by the developer himself. The unit testing is used to validate that each component of the software code performs as expected. The unit testing is concerned with the functional correctness of standalone modules and it is done by the developer during the development phase of an application. Why do we need unit tests? Unit testing is important because the software can fail in unexpected ways. Manual testing is slow, least reliable, and expensive to test an application. Whereas, unit testing saves time and money if it is implemented properly. Here, are a few key reasons to perform unit testing: Unit tests are used to fix bugs early in the development phase and save costs and time. It is used by the developers to understand the code base and then it enables them to make changes quickly. Good unit testing serves as project documentation of software. Unit tests are used to re-use code and they are easy as well to identify defects in any application. Unit Testing Tools There are many automated tools available to test the application. Few examples as below: 1) Junit Junit is a free testing tool used by the developer for Java programming language. It implements assertions to identify the test method. Junit is used to test data first and then inserted in the piece of code.     2) NUnit NUnit is a framework widely used by the developer to unit-test an application that is developed in all .NET languages. Nunit is open source and supports data-driven tests that run parallelly. Nunit allows the developer to write a script manually.     3) PHPUnit PHPUnit is a unit testing tool used by the developer to test an application. PHPUnit tests a small portion of code known as units. PHPUnit provides a pre-define assertion to assert that the system behaves in a proper manner.     4) JMockit JMockit is open-source Unit testing with line and path metrics. JMockit allows the developer to record and verifying syntax in API and offers Line coverage, Path Coverage, and Data Coverage.      5) EMMA EMMA is an open-source toolkit used by the developer for analyzing and reporting code written in Java language. Emma is a java-based external library and support method, line, basic block coverage type.   Setting up Unit testing in ASP.NET Core Application There are many test frameworks available in the market but we will be going to use the xUnit, which is a very popular testing framework. The simplest way to create unit test case for an ASP.NET Core web app project is to create a new test project using a template. We can create a test class for each application class. The simple unit test includes three-step: Arrange: In this step setup the necessary variable and object. Act: In this step, call the method with a required parameter for testing Assert: In this step, the expected result is verified Read More: How To Secure Asp.net Core Web App?   Create a sample ASP.NET Core application To create ASP.NET Core Console Application follow the below steps: Step 1:Open Visual Studio, select File option -> New option -> Project Step 2:elect the ASP.NET Core Console Application template and click Next. Step 3:Enter the project name, and then click Create.   Figure 1 Create an application Step 4:Create a new class Add new class Calculator.cs namespace UniTestDemo { public static class Calculator { public static double Addition(double num1, double num2) { return (num1 + num2); } public static double Subtraction(double num1, double num2) { return (num1 - num2); } public static double Multiplication(double num1, double num2) { return (num1 * num2); } public static double Division(double num1, double num2) { return (num1 / num2); } } } Now, Add Testing Project 1: In Visual Studio 2019, Right-click on solution-> Add -> Project. 2: In the Create New Project dialog, select the Test ->xUnit Test Project (.Net Core) template, and click Next. 3: Enter the project name, and then click Create.   Figure 2 Add Testing Project Step 5:Add Reference to your project Right-click on your Testing project (XTestDEmo)->Add->reference   Figure 3 Add Reference to the testing project Searching for Dedicated ASP.Net Core Web Developer ? Your Search ends here. See here   Step 6:Now, Add one class in 'XTestDEmo' project named 'TestCalculator.cs' In 'TestCalculator.cs' class we will write test case for method define in 'Calculator.cs'. These methods follow three-step: Arrange, Act, Assert. The following class contains test cases for Calculator: using System; using UniTestDemo; using Xunit; namespace XTestDEmo { public class TestCalculator { [Fact] public void Test_Addition() { // Arrange var number1 = 4.9; var number2 = 3.1; var expectedValue = 8; // Act var sum = Calculator.Addition(number1, number2); //Assert Assert.Equal(expectedValue, sum, 1); } [Fact] public void Task_Subtract_TwoNumber() { // Arrange var number1 = 3.2; var number2 = 1.5; var expectedValue = 1.7; // Act var sub = Calculator.Subtraction(number1, number2); //Assert Assert.Equal(expectedValue, sub, 1); } [Fact] public void Test_Multiplication() { // Arrange var number1 = 2.5; var number2 = 3.5; var expectedValue = 8.75; // Act var mult = Calculator.Multiplication(number1, number2); //Assert Assert.Equal(expectedValue, mult, 2); } [Fact] public void Test_division() { // Arrange var number1 = 2.9; var number2 = 3.1; var expectedValue = 0.94; //Rounded value // Act var div = Calculator.Division(number1, number2); //Assert Assert.Equal(expectedValue, div, 2); } } } Step 7: Now, Run your test cases For running all test cases open Test Explorer where you will find you're all test case. To run click on RunAll this will start executing test cases. To open Test Explorer in visual studio Click on Test option->Window->Test Explorer.   Figure 4 Opening Task Explorer Once your test case runs successfully, the output screen will be shown as below.   Figure 5 Output Conclusion In this blog, we have discussed the unit testing with ASP.NET which is used by the developer for issuing defects and we have also portrayed the purpose of unit testing. We illustrated a simple example of a unit test with Xunit using the ASP.NET Console application. We hope you will acquire a clear understanding on how to integrate unit testing.
Kapil Panchal

Kapil Panchal

A passionate Technical writer and an SEO freak working as a Technical Content Manager at iFour Technolab, USA. With extensive experience in IT, Services, and Product sectors, I relish writing about technology and love sharing exceptional insights on various platforms. I believe in constant learning and am passionate about being better every day.

Build Your Agile Team

Enter your e-mail address Please enter valid e-mail
Categories

Ensure your sustainable growth with our team

Talk to our experts
Sustainable
Sustainable
 

Blog Our insights

Quarkus vs Spring Boot - What’s Ideal for Modern App Development?
Quarkus vs Spring Boot - What’s Ideal for Modern App Development?

Spring Boot has long been a popular choice for developing custom Java applications. This is owing to its comprehensive features, impeccable security, and established ecosystem. Since...

Power BI Forecasting Challenges and Solutions
Power BI Forecasting Challenges and Solutions

Microsoft Power BI stands out for detailed data forecasting. By inspecting data patterns and using statistical models, Power BI provides a visual forecast of things to anticipate in...

Kotlin vs Java - Top 9 Differences CTOs Should Know
Kotlin vs Java - Top 9 Differences CTOs Should Know

Choosing the right programming language becomes crucial as it greatly influences the success of a software development project. When it comes to selecting the best programming language...