In this post I am going to explain about uses of unit
testing and writing unit test cases in c#.
Many junior/fresher developers will have confusion like who
really deal with Unit testing. Unit test cases are written by developers.
What is Unit Testing?
It tests behavior of a function/method by writing another
piece of code.
Why unit tests?
·
Normally Software Projects are intended
to run for long term at least for a min. of 5 years.
·
During this period, maintaining
the application is very crucial.
·
Any Change Request received might impact
the other functionality of the application.
·
So, before deploying the change
in Production lot of regression testing has to be done. This consumes lot of tester’s
time.
Imagine a situation where the Change requests are
happening very frequently, the effort required for regression testing will be
very high and the possibility of having defects will also be high.
Software
Maintenance with Normal approach (Regression Testing):
Regression testing is the process of testing changes
to computer programs to make sure that the older programming still works with
the new changes.
Software
Maintenance with Unit testing:
·
Unit Tests will certainly help in
minimizing the regression testing.
·
Every method will be associated with Test
Methods. Test Methods will test the purpose of the actual method.
·
Test Methods will check for below
scenarios
·
Positive / Success scenario
·
Negative / Failure scenario
·
Exception / Error Handling scenario
·
A normal method might require more than
one Test Method depending on the complexity of the Method.
·
Before Code Delivery., Developer has to
ensure that all the test methods (in entire solution) are getting passed.
Software
maintenance with TDD (Test Driven Development):
TDD is an evolutionary approach to development which
combines test-first development where you write a test before you write just
enough production code to fulfill that test and then refactor the code to pass
the test.
Writing
Unit test cases:
We have below frameworks to write unit test cases in
C#.
· MS Test
· NUnit
We have AAA pattern to write unit test cases:
Arrange
all necessary preconditions and inputs.
Act on the object
or method under test.
Assert that the
expected results have occurred.
Following are the
steps to create the unit test project:
Right click on the
solution explorer and click on Add and select Unit Test Project
Solution Explorer:
Test Class:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BusinessManager;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void GetNameTest()
{
//Arrange
Employee objEmployee = new Employee();
String firstName = "Narasimha";
String lastName = "Reddy";
String expected = "Narasimha
Reddy";
String actual;
//Act
actual =
objEmployee.GetName(firstName, lastName);
//Assert
Assert.AreEqual(expected, actual);
}
}
}
Employee Class:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BusinessManager
{
public class Employee
{
public string GetName(string firstName, string lastName)
{
return string.Concat(firstName,"
", lastName);
}
}
}
I hope you it will help you to get idea on unit testing.
Happy Coding......
No comments:
Post a Comment