52 lines
2.3 KiB
Markdown
52 lines
2.3 KiB
Markdown
|
---
|
||
|
title: Unit Testing
|
||
|
---
|
||
|
|
||
|
# Unit Testing
|
||
|
|
||
|
Unit Testing is a way of checking that a small chunk of your code, or a 'unit', works as you expect it to and it is very good practice for producing high quality code.
|
||
|
It is particularly useful in large projects, to quickly and easily track down what unit is causing defects in your wider project.
|
||
|
In commercial development the majority of bugs and issues with code can be mitigated through the use of unit testing. Unit testing also allows for automation testing.
|
||
|
Unit testing is also closely used in conjunction with test driven development.
|
||
|
|
||
|
## Creating a basic unit test
|
||
|
|
||
|
1. Right click ```Solution``` > ```Add``` > ```New Project```
|
||
|
|
||
|
2. Select ```Unit Test App (Universal Windows)``` and name the UnitTest project appropriately
|
||
|
|
||
|
3. Reference the solution you are testing, by right clicking the ```References``` tab in the unit test > ```Add Reference``` and select the solution that you are referencing. Then make the class that you are testing publicly accessible.
|
||
|
|
||
|
4. Name the TestMethods appropriately, and then input the ```//Arrange``` ```//Act``` ```//Assert``` parameters within the method body code block.
|
||
|
|
||
|
5. Under the ```// Arrange``` section, each variable involved in that individual test needs to be declared, as well as the ```expectedResult```.
|
||
|
|
||
|
6. Under the ```// Act``` section, the variables that are going to be passed as an input into a given method are placed into the method's parenthesis, and all of this is initialised as an ```actualResult``` variable.
|
||
|
|
||
|
7. Under the ```// Assert``` section, to check whether the ```expectedResult``` is equal to the ```actualResult``` and then assert this finding to make the test pass using the ```Assert.AreEqual(expectedResult, actualResult)``` class and method.
|
||
|
|
||
|
|
||
|
## Example code
|
||
|
The code below is testing whether the ```MultiplyPointsMethod``` in the ```Multiply Points Class``` will output ```600``` from an input of 6.
|
||
|
|
||
|
```cs
|
||
|
[TestMethod]
|
||
|
public void BonusPointsOutputTestWithInt6()
|
||
|
{
|
||
|
// Arrange
|
||
|
var userInput = 6;
|
||
|
var expectedResult = 600;
|
||
|
|
||
|
// Act
|
||
|
int actualResult = MultiplyPointsClass.MultiplyPointsMethod(userInput);
|
||
|
|
||
|
// Assert
|
||
|
Assert.AreEqual(expectedResult, actualResult);
|
||
|
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Running the test
|
||
|
1. Go to ```Test``` > ```Run``` > ```All Tests```
|
||
|
2. If the testing window does not pop up go to ```Test``` > ```Windows``` > ```Test Explorer```
|